0

非常に重い読み取りおよび書き込み操作や、myisamの他のテーブルへの結合のような列をtid(int) zid(int) direction(tinyint) type(tinyint)持つテーブルは、myisamまたはinnodbで設計する方がよいでしょうか?

innodbの書き込みパフォーマンスはmyisamよりも悪いと言われました。本当?また、innodbは、データが主キーで抽出されない場合は常にmyisamのようなテーブルロックを備えています。myisamとinnodbを使用してテーブル間でテーブルを結合するために使用する手法はありますか?

4

1 に答える 1

1

デフォルトでは、常にInnoDBを使用する必要があります。より高速です。トランザクション、外部キー、および行レベルのロックをサポートします。クラッシュに対する耐性が高く、万能で、MyISAMよりもかなり優れています。

MyISAMテーブルが必要になる状況がいくつかあります。2つの一般的なものは次のとおりです。

  • フルテキストまたは地理空間インデックスをサポートしていない古いバージョンのMySQLを使用しており、これらの機能を有効にする必要があります。

    (フルテキストインデックスを使用している場合は、とにかくSphinxなどの外部検索エンジンを使用する方がよい場合が多いことに注意してください。MySQLのフルテキスト検索は特に優れていません。)

  • 異常なデータアクセスパターンを持つテーブル(特に、ログなどの非常に大きな書き込み専用テーブル)があり、MyISAMでパフォーマンスが向上する場合があります。

ただし、これらの条件が当てはまることが確実でない限り、InnoDBを使用する必要があります。ほとんどの場合、これが正しい選択です。

于 2013-02-20T03:53:55.523 に答える