ストレートエンジンとはデータへアクセスする主な機能の部分のことを指します。
MySQLの最大の特徴は、このストレートエンジンをテーブル単位で設定できることです。
MySQLは非常に多くのストレージエンジンの種類があります。
その種類によって特長は異なります。
代表的なものは、MyISAMとInnoDBです。
ちなみにですが、マイアイサムとイノディービィーと読みます。
MyISAM はデフォルトで使用されるストレートエンジンです。
テーブル作成時にENGINEを指定することで設定します。
テーブル作成時にCREATE TABLEステートメントに加えることで、どのストレージエンジンを使用するのか指定します。
CREATE TABLE t (i INT) ENGINE = INNODB;
上記のように指定するとINNODBが設定されます。
デフォルトでは、MyISAMが設定されますが、--default-storage-engine または --default-table-type サーバー始動オプションを利用するか、my.cnf で default-storage-engine か default-table-type オプション を設定する事で変更することができます。
先ほども言いましたが、通常デフォルトとなるストレートエンジンです。
テーブル単位のファイル構造を持っています。
トランザクション処理はサポートされていませんが、高速に動作します。
INNODBの一番の特徴は、外部キーの制約やトランザクション処理がサポートされていることです。
また、クラッシュ時にリカバリが可能です。
動作の方はMyISAMに比べて遅くなります。
MERGE
複数のテーブルを仮想的に一つに見せるストレージエンジンです。
大容量のデータを扱う場合に適しています。
MEMORY(HEAP)
高速に検索を行うことができます。
インメモリのため、MySQLを再起動するとデータは消えてしまいます。
EXAMPLE
ストレートエンジンを作成する人向けのテンプレートです。
FEDERATED
MySQL5.0から提供された最新のストレートエンジンです。
他のMySQLサーバーと連携して動作します。
ARCHIVE
データが圧縮されて保存されるため、小さい容量で大量のデータを保存することができます。
INSERTとSELECTのみサポートされていて、UPDATEやDELETEは使用できません。
CSV
データがカンマ区切りで保存されます。
BLACKHOLE
内部的に処理を行わないストレートエンジンです。
そのためサーバーからの応答はとても速くなります。