InnoDBを含む代表的なストレージエンジンの主な特徴
InnoDBを含む代表的なストレージエンジンの主な特徴は以下の通りです。
機能 | InnoDB | MyISAM | Memory | Archive | NDB |
上限サイズ | 64TB | 256TB | メモリサイズに依存 | 上限なし | 384EB |
トランザクション | Yes | No | No | No | Yes |
ロックの粒度 | 行 | 表 | 表 | 表 | 行 |
MVCC | Yes | No | No | No | No |
地理空間(Geospatial) データ型 |
Yes | Yes | No | Yes | Yes |
地理空間(Geospatial) インデックス |
No | Yes | No | No | No |
Bツリーインデックス | Yes | Yes | Yes | No | Yes |
ハッシュインデックス | No | No | Yes | No | Yes |
全文検索インデックス | No | Yes | No | No | No |
クラスタインデックス | Yes | No | No | No | No |
データ圧縮 | Yes |
Yes (読み取り専用) |
No | Yes | No |
分散型クラスタ データベース |
No | No | No | No | Yes |
外部キー | Yes | No | No | No | No |
MyISAM
MyISAMはMySQL 5.1以前のデフォルトのストレージエンジンでした。MyISAMは非常にシンプルで軽量なストレージエンジンです。シンプルな構造ゆえに参照処理の性能が高く、またファイルをOSのコピーコマンドだけでテーブルを他のMySQLサーバなどにコピー出来る高い可搬性を持っています。
ただしここ最近のアプリケーションではInnoDBの利用が主流となり、MyISAMの利用は減っています。MyISAMはトランザクションに対応しておらず、更新処理の際はテーブルレベルロック(InnoDBは行レベルロック)のため同時実行性に大きな制約があります。さらにデータ変更中にMySQLサーバが停止してしまった場合に簡単にデータファイルが破損し、自動復旧の方法が無いことなども理由となっています。次世代のMySQL 5.6では、全文検索やGISインデックス(座標や地形情報データを格納したデータに対するインデックス)などMyISAMのみが持っている機能は全てInnoDBに実装する予定とされています。
MyISAMストレージエンジンを使用したテーブルには通常3個のファイルが作成されます。それぞれのファイル名はテーブル名と同じになります。
ファイルの内容 | 拡張子 |
テーブル定義 | .frm |
データ | .MYD |
インデックス | .MYI |
なお.frmファイルはどのストレージエンジンを利用した場合でも必ず作成されます。また、MyISAMのデータファイルは圧縮可能ですが、圧縮した場合は読み取り専用となり、データの変更は出来ません。圧縮にはmyisampackコマンドを使用します。このmyisampackコマンドはMySQLサーバを介さずに直接データファイルの変更を行うため、必ずMySQLサーバをシャットダウンした状態で実行する必要があります。