Open Source Web Development Tutorials - Dev Shed
使える!MySQLのベンチマークツール
(2009/01/19公開)
sql-benchとSuper Smack
最初に登場するベンチマークユーティリティーは、MySQLディストリビューションに付属する「sql-bench」と呼ばれる公式MySQL Benchmarking Suiteだ。このベンチマークパッケージは、テスト済みのSQLサーバー全体の概要を把握するためのツールだ。つまり、サーバーの全体的なパフォーマンスを測定し、ほかと比較するための基礎となるものであり、新たな調整をテストするのには必ずしも向いていない。
本稿では、各ユーティリティーの利点と難点を指摘していくつもりだ。重要なのは、どれをいつ使うべきか、そしてその理由を正しく理解することだ。SQL-benchはシリアル化されている。シングルスレッドで、マルチスレッド処理(マルチCPUまたはデュアルコア/クアッドコア装備)を活用できない。SQL-benchはSMP性能をまったく有していない。だが、MySQL開発チームは将来的にマルチスレッドサポートを追加する予定だとされる。
このベンチマークユーティリティーを実行するには、/sql-benchディレクトリに所在するrun-all-testsスクリプトを起動する。プログラム全体の実行時間は、読者のハードウエアスペックにより、数分から数時間におよぶ。
本稿では、登場する各ユーティリティーの使用方法の一般的な指針を示している。だが、これは各ベンチマークツールに付属した文書および/またはマニュアルに取って代わるものではない。本稿に記述されたスクリプトやコマンドラインを実行する前に、付属文書を必ずお読みいただきたい。各ユーティリティーにはさまざまなパラメータがあり、公式マニュアルではパラメータそれぞれが詳しく説明されている。
前述のsql-benchは、下記の構文で起動するとよい。
./run-all-tests --server=mysql --user=root --log --fast
上記の構文では、--logパラメータを使用するため、outputと呼ばれるサブディレクトリにおける詳細なリアルタイムロギングが出力される。ベンチマーキングのプロセス中、これらのログをチェックする。このベンチマークテストでは、クエリーの実行に要するウォールクロック秒が測定される。この値に続いて、さまざまな値がかっこ内に表示される。ウォールクロック秒から、2番目の小さな値を差し引く必要がある。
SQLサーバーが応答するまでの厳密な時間を知りたい場合、上記の差し引きは重要だ。ウォールクロック秒の合計には、スクリプト実行やほかの外的要因も含まれる。これらは除外して考えるべきだ。付属ソフトであることから、このベンチマークツール今でもよく使用されている。Perlで記述されており、現実世界のパフォーマンスを反映しない上、シングルスレッドだ。
次へ進もう。よく使われる負荷テスターにSuper Smackがある。このツールの魅力は、マルチスレッド性能と高度にカスタマイズ可能な設計とにある。ユーザーは、同時接続の数と各クライアントが実行する反復回数を指定することができる。加えて、テストデータならびにテーブルに対して実行されるテストを指定できるのだ。カスタマイズ可能性が高いツールだ。
その結果、独自のSuper Smackテスト一式を作成するにはいくらか時間をかけて研究する必要がある。Super Smackの使い方はマニュアルで実にきちんと解説されているから、実際に読んでいただきたい。読者は独自のテストテーブルを作成し、これに入力し(オンザフライでランダムに、または入力ファイルから)、ベンチマークテスト中に実行される一連のクエリーを明確に指定する必要がある。
とはいえ、Super Smackは、カスタマイズされたテストを独自に準備しなくても使用できる。その場合、Super Smack付属のデータファイルwords.datからhttp_authテーブルが自動生成され(見付からない場合)、データ投入される。ただし、コマンドラインでSuper Smackを実行するときは同時接続の数と反復回数を指定する必要がある。いくつかの例を見てみよう。
super-smack update-select.smack 50 20000
// 50 concurrent users and each executing 20,000 iterations of the test queries
super-smack -d mysql select-key-smack 75 1000
// 75 concurrent users and each executing 1,000 iterations
要約すると、Super Smackはおそらくもっとも優れたベンチマークユーティリティーの1つだ。柔軟性と設定可能性が高く、時代遅れにならない機能を備えている。読者の要件が何であろうと、時間をかけてSuper Smackをマスターすれば、カスタマイズしたテストはとても有用な道具となるに違いない。その意味でかなり高度なツールと言えよう。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








