データベースは,大量のデータをいかに高速に処理できるかが評価のポイントだ。MySQLは,軽量で高速なデータベースとして広く普及している。しかし,MySQLといえどもすべてのシチュエーションで最適なパフォーマンスを発揮できるわけではない。そのためにチューニングを行うわけだが,はたして何を基準にパフォーマンスの良し悪しを判断すればよいだろうか。判断するには,標準的なパフォーマンスツールが必要だ。MySQL5.1.4から,パフォーマンス・テストを実施する外部コマンドmysqlslapが実装された。今回は,このmysqlslapの使用方法を紹介する。

 また10月30日と31日,日本で2回目となる「MySQLユーザーコンファレンス2008」が開催された。参加できなかった方のためにエッセンスをお伝えする。

mysqlslapの概要

 これまで,MySQLではPerlベースのベンチマーク・ツールとしてMyBenchやsuper-smackがあった(MySQLウォッチ第25回「チューニングの指標,ベンチマークのノウハウ」)。これらはMySQL以外にPerlの動作環境を整備する必要があり,Perlに慣れていないユーザーには多少ハードルが高いのではないかと思う。MySQL5.1.4から搭載されたmysqlslapはこの状況を大きく改善する。

 データベースのパフォーマンス・テストの原理は,非常に単純だ。データベースにアクセスするクライアントを用意してデータベースに負荷を与え,その処理時間を計測する。過負荷を与える場合には,複数のクライアントを用意する。しかし,実際のクライアントを用意するのは,費用面でも作業効率面でもよいものではない。ソフトウエアで,過負荷がシュミレートできれば大量の端末PCを準備しなくてもいいことになる。

図1●ツールを使用しないパフォーマンス・テスト

 5.1.4より,パフォーマンス・テストを実施する外部コマンドmysqlslapが実装された。mysqlslapは,MySQLの外部コマンドとして標準で導入される。これまでのようにMySQL以外の環境を整備する必要はない。テストに使用するテーブルやデータも自動的に作成するので,準備はまったく不要であり,容易で手軽にパフォーマンス・テストの実施が可能になった。なお,mysqlslapは,ローカルのMySQLサーバーだけでなくリモートのMySQLサーバーに対してもパフォーマンス・テストを実行できる。

図2●mysqlslapの概要