どのmysqlエンジンを選択すればよいか混乱しています(最もよく使用されるMyISAMとInnoDBについて話しましょう)。
理論は言う:
テーブルを作成するとき、整合性を維持したい場合や、「テキスト」で検索するクエリを高速化したい場合は、常に何かを犠牲にする必要がありますか?
必要な場合に使用するエンジンをどのように決定しますか
どちらもbツリーインデックスで機能しますが、MyISAMはFULLTEXTインデックスでも機能します。
MySQL 5.6は、FULLTEXTインデックスもサポートすることになっています。 GA になったときにそれを探します。
InnoDBはデータの整合性がより厳格ですが、MyISAMは緩いです
InnoDBにはトランザクションがありますが、MyISAMにはありません。
InnoDBには外部キーと関係制約がありますが、MyISAMにはありません。
これは、InnoDBが [〜#〜] mvcc [〜#〜]を介してトランザクション分離をサポートするという事実に照らして当てはまります 。つまり、InnoDBを完全に [〜#〜] acid [〜#〜] に準拠させる。
MyISAMは読み取りが高速ですが、書き込みが低速です(これについてはわかりません)
これは、MyISAMテーブルの行形式(固定または動的)に完全に依存します。遅いのは相対的です。結局のところ、MyISAMに対する各DMLステートメントは、毎回フルテーブルロックを実行します。
十分な大きさのキャッシュがある場合、COMMITが遅延する可能性があるため、InnoDBは読み取りと書き込みの両方でより高速になります。これにより、InnoDBバッファープールに既にキャッシュされているデータは、メモリから直接読み取ることができます。
InnoDBはデータとインデックスの両方をキャッシュしますが、MyISAMはインデックスのみをキャッシュします 。したがって、MyISAMからのデータのディスク読み取りは常に必要です。