MySQL MyISAMとInnoDBの違い
MySQLで利用するテーブルのストレージエンジンにはMyISAMとInnoDBがありますが、どのようなケースにどちらを選べばいいか、メモしておきます。
デフォルトではMyISAMです。
MyISAMの利点と問題点
- 利点…シンプル、高速に動作、フルテキスト検索に対応
- 欠点…トランザクションや外部キー制約をサポートしない、REPAIR TABLEで修正できることが多いがクラッシュ時に使えなくなる、テーブルレベルでロックをかけるという点でロックの粒度が荒い
InnoDBの利点と問題点
- 利点…トランザクションをサポート、外部キー制約が装備されている、クラッシュ時のリカバリに対応、列レベルでロックを実施
- 欠点…フルテキスト検索ができない、パフォーマンスが悪い
参考、引用
http://journal.mycom.co.jp/news/2009/03/27/048/index.html
http://www.thinkit.co.jp/free/article/0608/1/2/
データ整合性が求められるデータベースにおいては、InnoDBを利用し、パフォーマンス重視の場合はMyISAMにしましょう、ということですかね。
テーブルごとに、ストレージエンジンを選択することもできます。
phpMyAdminでMySQLのストレージエンジンを変更する