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」を紹介する。