SitePoint: New Articles, Fresh Thinking for Web Developers and Designers

MySQLはほかの多くのデータベースと違って複数のテーブルタイプを提供しており、用途に応じてテーブルタイプを使い分けることができるようになっている。デフォルトのテーブルタイプはMyISAMだが、ほかにもInnoDBを選択することもできる。SitePointに次の2つの記事が掲載されており、どちらを選択すべきかが簡潔にまとまっている。

内容を要約すると次のようになる。

MyISAMの特徴と問題点

  • 特徴: デフォルトのテーブルタイプ
  • 特徴: シンプル
  • 特徴: 高速に動作
  • 特徴: フルテキスト検索に対応
  • 欠点: トランザクションや外部キー制約をサポートしない
  • 欠点: REPAIR TABLEで修正できることが多いがクラッシュ時に使えなくなる
  • 欠点: テーブルレベルでロックをかけるという点でロックの粒度が荒い

InnoDBの特徴と問題点

  • 特徴: トランザクションをサポート
  • 特徴: 外部キー制約をサポート
  • 特徴: クラッシュ時のリカバリに対応
  • 特徴: 列レベルでロックを実施
  • 欠点: 複雑さが増す
  • 欠点: フルテキスト検索ができない
  • 欠点: パフォーマンスが悪い
  • 用途例: オンラインショップ、金融アプリケーション、データ整合が求められる用途

MyISAMとInnoDBはちょうど利点と欠点がお互いに補完し合う関係にあることがわかる。MyISAMの特徴で十分な場合にはそのまま使い、トランザクションのサポートやデータ整合性が必要とされる場合にはInnoDBを採用するという指針になるようだ。なおひとつのデータベースで複数種類のテーブルタイプを使うこともできるとされている。