2010-12-28 12 views
0

innodbまたはmyisam?MySQLテーブルの種類、innodb?

相続人は私が持っているもの:
1台、

ID(INT、自動インクリメント、主キー)、名前(CHAR(40))、その後、20 VARCHAR(255)さん。 700万行

それはちょうど1つのテーブルです!

クエリの種類:(すべてがIDに基づいており、唯一の1行がこれまでに返却またはクエリごとに更新され、何の範囲検索やランダムまたは空想何かをtheresの)

SELECT(20件のvarchar)TABLE1 WHERE IDから、 = 'id';

UPDATE(20個のvarchars)FROM table1 WHERE id = 'id';

削除は一週間に一度一括して行われ、1日あたり5,000回の挿入が可能です。 (1分間に約1000回)

残念ながら、私は現在、ベンチマークの機能を持っていないので、私は必要なものに対してどのテーブルタイプを使用すべきですか?私の場合に選択する主な要因は何ですか?

+0

データベースサーバーの特性は何ですか?あなたはそれにどれくらいの量のRAMを割り当てることができますか?ディスクのパフォーマンスはどうですか?上記であなたが話した更新はトランザクションにありますか? –

+0

更新と選択は照合または集計されない個別の照会です。 PHPの単一行、ページあたり1つの負荷。それは私が取引を使用しないことを意味しますか?この状況では、テーブルと行のロックが最大の要因ですか? – David19801

+0

最終決定 - 無修正。ありがとうございます。 – David19801

答えて

0

も更新を行う際にInnoDBが唯一の影響を受けた行をロックします一方、MyISAMテーブルは、テーブル全体をロックすることに注意されます。

個人的な考え方は、全文検索が必要な場合にのみMyISAMを使用することです(DrColossosにより良い検索オプションがあることに同意します)。

1

私はInnoDBが必要なエンジンだと思います。トランザクション機能を持つだけでその理由があります。あなたのテーブルのサイズはこの選択を正当化します。

+0

トランザクション機能は何ですか? – David19801

+0

何か問題が発生した場合にコミットされるか、ロールバックされる更新単位を定義する機能。これにより、データの一貫性が維持されます。 –

1

簡潔に言えば、MyISAMは高速ですが、「トランザクション」をサポートしていません。 INNODBはトランザクションのサポートを提供しますが、このオーバーヘッドは少し遅くなります。

ただし、INNODB outはINSERTとUPDATESに対してMyISAMを実行します。したがって、データの挿入/更新に費やす時間が少なくて済み、それを選択する時間が長い場合はMyISAMをお勧めします(逆も同様です)。

0

私の意見では、MyISAMの方がInnoDBよりも高速ですが、現在はほぼ同じスピードです。 InnoDBを超えるMyISAMの利点の1つは、フルテキストインデックスをサポートすることです。検索クエリの全力を尽くしたい場合に役立ちます。 私はInnoDBを推奨する他のタスクについては、要件に応じて同じデータベースで両方を使用することもできます。

MyISAM vs InnoDBに関するスタックオーバーフロー上の多くの議論がありますが、ここではone of them

+0

MySQLでの全文検索は非常に悪いです。たくさんの犠牲を払う。ほとんどの場合、外部検索が優れたソリューションと思われます。 – DrColossos