MySQL 5.6 で EXAMPLE ストレージエンジンを使ってみる
EXAMPLE ストレージエンジンは,ストレージエンジンを作成する人のためのテンプレートです.詳しくはこちら.
http://dev.mysql.com/doc/refman/5.6/en/example-storage-engine.html
今回は,MySQL 5.6 をソースからインストールすることを前提に EXAMPLE ストレージエンジンの導入について記します.
MySQL 5.6 の基本的なインストール方法はこちらをどうぞ.
http://d.hatena.ne.jp/laysakura/20130209/1360422816
インストール時の設定
インストールの際,cmake のフラグに "-DWITH_EXAMPLE_STORAGE_ENGINE" を付けます.
$ cmake -DWITH_EXAMPLE_STORAGE_ENGINE
あとは通常通り make && make install です.
インストール後の設定
mysqld サーバが立ち上がっていて,mysql クライアントで接続できていることを前提とします.
MySQL で使用できるストレージエンジンの一覧は,"show engines" コマンドで確認できます.
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
多分現時点で EXAMPLE ストレージエンジンは見えていないと思います.ですので,これから EXAMPLE ストレージエンジンを使用可能にする方法を書きます.
まず,"$basedir/lib/plugin/ha_example.so" が存在してることを確認して下さい.当環境では "/usr/local/mysql/lib/plugin/ha_example.so" がありました.
この状態で,MySQL のシェルに -u root として入り,次のコマンドを実行します.
mysql> INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so'; Query OK, 0 rows affected (0.01 sec)
これで晴れて EXAMPLE ストレージエンジンが使用可能になったはずです.
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | EXAMPLE | YES | Example storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
使ってみる
実際に使ってみましょう.
http://dev.mysql.com/doc/refman/5.6/en/example-storage-engine.html
のページと同じ事をします.
mysql> CREATE TABLE test (i INT) ENGINE = EXAMPLE; Query OK, 0 rows affected (0.06 sec) mysql> INSERT INTO test VALUES(1),(2),(3); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM test; Empty set (0.00 sec)
上記ページの記述と異なり,INSERT はエラーとなりません.仕様が変わったのでしょうかね?