|
||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||
| Blackholeテーブルのファイル構成 | ||||||||||||||
|
テーブルを作成する際、CREATE TABLE文のENGINE句に"BLACKHOLE"を指定することにより、Blackholeテーブルを作成することができます。Blackholeテーブルを作成すると、そのデータベースのディレクトリ内に、どのようなカラム構成にてできているかなどのテーブル構造のデータが格納された「テーブル名.frm」のみが作成されます。 次に示すは、「Blackhole_TEST」データベース内に「TEST00」という名前のBlackholeテーブルを作成した時のファイル一覧です。「Blackhole_TEST」ディレクトリ内に「TEST00.frm」ファイルのみが存在していることがわかると思います。
[root@localhost var]# ls Blackhole_TEST/
また、次はBlackholeテーブルの「TEST00」に10万件のレコードをロードした状態にて、「show table status」コマンドを実行した結果内容です。10万件のレコードは存在せず、「Rows: 0」と表示されています。
mysql> show table status \G;
|
||||||||||||||
| Blackholeエンジンの使い道 | ||||||||||||||
|
Blackholeエンジンの用途としては、いくつか考えられます。 Blackholeエンジンは、テーブルデータをメモリにもディスクにも保存しませんが、バイナリログを書き出すことは可能です。そこで、MySQLのレプリケーション機能と組み合わせると図2のような仕組みを作ることができます。 ![]() 図2:Blackholeエンジンの使用例 マスターデータベース内のログデータベースをBlackholeテーブルとして作成すると、ログデータベースのデータ実体をスレーブデータベースにのみ作成することができます。もちろん、スレーブデータベースはMyISAMエンジンなどのデータをディスク上に格納するストレージエンジンを使用しなければいけません。 このような用途にBlackholeテーブルを使用すると、日増しに増加するログデータベースのデータ実体がマスターデータベース内に蓄積されません。よって、マスターデータベースは業務データベースのメンテナンスにのみ注力でき、直接業務処理とは関係のないログデータベースのメンテナンスをスレーブデータベースに任せることができます。 さらに、上記以外のBlackholeエンジンの用途としては、性能測定環境といったものが考えられます。Blackholeエンジンは実質データ処理を何も行いませんので、ストレージエンジンそのものの負荷がほとんどありません。そこで、このことを上手に利用すると、MySQLサーバのデータ処理以外の性能を測定することが可能になります。 例えば、バイナリログの書き込みを実施した時の性能と、未実施とした時の性能を比べれば、それは実質バイナリログの書き込み性能に相当します。 また、MySQLサーバはデータ処理以外にも様々な処理を行います。SQLのパースやオプティマイズなどです。そこで、データベース内の各種テーブルをBlackholeエンジンにて作成し、そのデータベースに対して各種SQL文の処理性能を測定すれば、それは実質データ処理以外の部分のMySQLサーバの性能値に相当します。 |
||||||||||||||
| まとめ | ||||||||||||||
|
今回はCSVエンジンとBlackholeエンジンという、特殊なストレージエンジンを紹介しました。特にBlackholeエンジンは、その名前もユニークですが機能も極めてユニークです。今回紹介した使用方法以外にももっと適した使用方法があるかもしれません。是非、色々と試して見て下さい。 |
||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||


