mysqlの簡単なベンチマーク測定方法 MyBench を使ってみる
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
MySQLについての設定について、いろいろと記事を書いてきました。
今回は、ベンチマークです。
MySQL自体にもベンチマークテストの機能がありますが、今回は、一般的なレンタルサーバーでも使えるような簡単なMySQLのベンチマークテストツールであるMyBench を使ってみたいと思います。
では、早速、このMyBench を使ってみましょう。
MySQLのベンチマークテストツールであるMyBench を使ってみる
MyBench の設定(インストール)から、使い方まで簡単に解説してみます。
まずは、以下のURLから最新バージョンをダウンロードします。
ダウンロード:http://jeremy.zawodny.com/mysql/mybench/
シェルから直接ダウンロードする場合は、以下のような感じです。
$ wget http:// jeremy. zawodny. com/ mysql/ mybench/ mybench- 1. 0. tar. gz
--2011-04-21 22:49:00-- http://jeremy.zawodny.com/mysql/mybench/mybench-1.0.tar.gz
jeremy.zawodny.com をDNSに問いあわせています... 209.20.73.205
jeremy.zawodny.com|209.20.73.205|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2332 (2.3K) [application/x-gzip]
'mybench-1.0.tar.gz' に保存中
100%[================================================>] 2,332 --.-K/s 時間 0s
2011-04-21 22:49:01 (51.7 MB/s) - 'mybench-1.0.tar.gz' へ保存完了 [2332/2332]
$
※このときの最新バージョンは、mybench-1.0.tar.gz でした。
Perlが使えるサーバーの適当なディレクトリに解凍します。
$ tar xvfz mybench- 1. 0. tar. gz
mybench-1.0/
mybench-1.0/MyBench.pm
mybench-1.0/Makefile.PL
mybench-1.0/META.yml
mybench-1.0/bench_example
Perlスクリプトファイルのbench_exampleを編集します。
bench_example を自身のMySQLの環境に合わせて編集します。
$ which perl
/usr/bin/perl
$ cd mybench- 1. 0
$ vi bench_example
まずは、Perlのパスを確認しておきます。
次に、bench_example を編集します。
use strict;
use MyBench;
use Getopt::Std;
use Time::HiRes qw(gettimeofday tv_interval);
use DBI;
my %opt;
Getopt::Std::getopt('n:r:h:', \%opt);
my $num_kids = $opt{n} || 10;
my $num_runs = $opt{r} || 100;
my $db = "dbname ";
my $user = "dbuser ";
my $pass = "dbpassword ";
my $port = 3306;
my $host = $opt{h} || "localhost ";
my $dsn = "DBI:mysql:$db:$host;port=$port";
my $callback = sub
{
my $id = shift;
my $dbh = DBI->connect($dsn, $user, $pass, { RaiseError => 1 });
my $sth = $dbh->prepare("SELECT * FROM wp_posts WHERE ID = ? ");
...
※赤 文字のところは、変更した箇所です。
先頭の/usr/bin/perl は、先にwhich コマンドで確認したパスを指定します。
ベンチマークテスト用SQL は、何でも良いのですが、なるべくリアルな値が欲しいので、ここでは、Wordpressの記事の中から無作為に抽出する処理がどれくらいかかるか確認しています。
ベンチマークテストを試してみます。
$ ./bench_example - n 1 - r 1
forking: +
sleeping for 1 seconds while kids get ready
waiting: -
test: 1 0.000959 0.000959 0.000959 0.000959 1042.75286757039
clients : 1
queries : 1
fastest : 0.000959
slowest : 0.000959
average : 0.000959
serial : 0.000959
q/sec : 1042.75286757039
こんな感じで出力されればOKです。
パラメータは、以下の通りです。
-n : テスト回数(クライアント数)
-r : 繰り返し回数
-h : MySQLサーバーのホスト名(IPアドレスでも可) : 指定しない場合は、先に編集したMySQLサーバーがデフォルトで使用されます。
$ ./bench_example - n 10 - r 20
forking: ++++++++++
sleeping for 2 seconds while kids get ready
waiting: ----------
test: 200 0.000101 0.018662 0.001254905 0.250981 7968.73070073033
clients : 10
queries : 200
fastest : 0.000101
slowest : 0.018662
average : 0.001254905
serial : 0.250981
q/sec : 7968.73070073033
この例では、10人のクライアントからそれぞれ20回クエリを発行しました・・・というイメージのテストが実施されています。
出力結果の意味
出力項目
意味
出力例
clients
クライアント数
10
queries
クエリ総数
200 ( = 10 x 20 )
fastest
クエリ最速時間
0.000101 ms
slowest
クエリ最低時間
0.018662 ms
average
クエリ平均時間
0.001254905 ms
serial
実際の処理時間
0.250981 ms
q/sec
1秒あたりに処理可能なクエリ数
7968.73070073033 回
いかがだったでしょか?
簡単ですね。何でも良いのですが、サンプルデータをどうするか・・・という問題はありますね。
基本的に上記のように結果が出ても、その1つの結果だけでは、あまり意味がないかもしれません。
このベンチマークは、いろんなMySQLサーバーを相対的に判断するための簡単なツールです。
そのため、同じデータで用いて複数のMySQLサーバーで実測する必要があります。
その上で、他のMySQLサーバーとどうか・・・という判断ができると思います。
自前のサーバー(VPSなど)の評価には、MySQLに含まれているベンチマークが良いかもしれません。
ただ、共有レンタルサーバーの評価には、かなり有効かもしれませんね。
実際、レンタルサーバーを選ぶときは、よく使ってます。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事 :
コメントを投稿 :