MySQL 4.0では,複数のテーブルタイプが選択できる。それぞれのテーブルタイプは,物理的なデータの格納方法やデータ処理の機能が異なっている。このように異なったテーブルタイプをサポートできるのは,異なるストレージ・エンジンを持っているからであり,MySQLの大きな特徴でもある。
まもなくリリースされるMySQL 5.0では,さらに多くのストレージ・エンジンを搭載する。今回は,MySQL 5.0のストレージ・エンジンを紹介する。
これまでのストレージ・エンジン
まず,MySQL 4.0に搭載されているストレージ・エンジンを説明する。MySQL 4.0では,表1のようなテーブルタイプに対応したストレージ・エンジンを使用できる。
表1●MySQL 4.0で使用できるテーブルタイプ
カテゴリ | テーブルタイプ | 概略 |
---|---|---|
基本的なテーブルタイプ | MyISAM | MySQLの基本となるタイプ。テーブル単位のロック |
BDB(BerkeleyDB) | トランザクション,ページ単位のロックが可能 | |
InnoDB | トランザクション,行単位のロック,外部キーが可能 | |
補助的なテーブルタイプ | MERGE | 同じ構造の複数のテーブル(MyISAMタイプ)を連結して1つのテーブルとする |
HEAP | メモリー上に作成されるテーブル。データベースの終了時に消滅する | |
Temporary | 接続ごとにユニークなテーブルとして作成される。他の接続からは参照できない。接続終了ととも消滅する |
MySQL 4.0は,Temporaryタイプのテーブルを除いて,5種類のストレージ・エンジン(MyISAM,BDB,InnoDB,MEMORY(HEAP),MERGE)を搭載しており,テーブルタイプに対応したストレージ・エンジンで処理が実行される。
MySQL 5.0に搭載されるストレージ・エンジン
MySQL 5.0ではストレージ・エンジンの種類は一挙に増える。従来のストレージ・エンジンに加え,新たに以下のストレージ・エンジンを搭載する。
表2●MySQL 5.0で使用できるストレージ・エンジン
ストレージ・エンジン | 概略 | 実装されたバージョン |
---|---|---|
EXAMPLE | Storage Engine評価用 | 4.1.3 |
ARCHIVE | 小さい容量で大きな大量のデータを扱う | 4.1.3 |
CSV | CSVファイルにデータを格納する | 4.1.4 |
NDB | クラスタ構成用のStorage Engine | 4.1.10a |
BLACKHOLE | 挿入されたデータを格納しないダミーのテーブルを作成する | 4.1.11 |
FEDERATED | 他のサーバのテーブルを参照(マウント)する | 5.0.3 |
FEDERATEDストレージ・エンジンは,MySQL 5.0からの新機能だ。他のMySQLサーバーに格納されているテーブルをローカルにあるテーブルと同様にアクセスできるようにする。
変わったエンジンとしては,BLACKHOLEエンジンがある。挿入されたデータを格納せず,常にEmptyなので参照できない。一見無意味に思えるが,レプリケーションの際に有効である。BLACKHOLEタイプのテーブルにデータを追加すると,データは消えてしまうが,binary logには内容が記録される。そのため,マスタ側にはデータが残らないが,レプリケーション機能を通じてスレーブ側のテーブルにデータが格納される。
次に,搭載されているストレージ・エンジンの確認方法と,新たなGUIデータベース設計ツール「MySQL Workbench」を紹介する。