MySQL(データベース)処理速度の計測方法
ファイアバード(firebird)では、
データベース(MySQL)のサーバーは、自動的に割り当てられる別のサーバーになります。
そのMySQLサーバーのパフォーマンスをMyBench ( http://jeremy.zawodny.com/mysql/mybench/ ) を使って確認してみました。
MyBenchの使い方
※必要ない方は、MySQL(データベース)処理速度の計測結果まで飛ばしてください。
- MyBenchを先のURLからダウンロードし、解凍します。
以下のファイルが解凍されるでしょう。
- bench_example
- Makefile.PL
- META.yml
- MyBench.pm
この中で、bench_exampleが実際のベンチマークテストを実行するPerlスクリプトになります。
- bench_exampleを編集します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| #!/usr/local/bin/perl -w
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 = "test";
## -- データベースで使えるユーザ名を設定します。
my $user = "test";
## -- データベースで使えるユーザのパスワードを設定します。
my $pass = "";
## -- MySQLで利用しているポート番号になります。(ほとんどは、このままでOK)
my $port = 3306;
## -- MySQLのhostのIPアドレスを設定します。("192.168.0.1" の部分を編集します。)
my $host = $opt{h} || "192.168.0.1";
my $dsn = "DBI:mysql:$db:$host;port=$port";
my $callback = sub
{
my $id = shift;
my $dbh = DBI->connect($dsn, $user, $pass, { RaiseError => 1 });
## -- ベンチマークテストをしたいSQLを以下のように記述します。
my $sth = $dbh->prepare("SELECT * FROM wp_posts WHERE ID = ?");
my $cnt = 0;
my @times = ();
## wait for the parent to HUP me
local $SIG{HUP} = sub { };
sleep 600;
while ($cnt < $num_runs)
{
my $v = int(rand(100_000));
## time the query
my $t0 = [gettimeofday];
$sth->execute($v);
my $t1 = tv_interval($t0, [gettimeofday]);
push @times, $t1;
$sth->finish();
$cnt++;
}
## cleanup
$dbh->disconnect();
my @r = ($id, scalar(@times), min(@times), max(@times), avg(@times), tot(@times));
return @r;
};
my @results = MyBench::fork_and_work($num_kids, $callback);
MyBench::compute_results('test', @results);
exit;
__END__
|
編集すべき事項は、以下の事項です。
・データベース関連情報(データベース名、ユーザ名、パスワード、ホスト名、ポート番号)
・ベンチマークテスト用SQL
- 編集を終えたら、アップロードします。
bench_exampleは、実行権を与えます。
$ chmod 755 bench_example
|
このように権限を変更します。
- さあ、実行してみましょう。
$ ./bench_example -n 10 -r 20
forking: ++++++++++
sleeping for 2 seconds while kids get ready
waiting: ----------
test: 200 0.001485 0.005046 0.002041875 0.408375 4897.45944291399
clients : 10
queries : 200
fastest : 0.001485
slowest : 0.005046
average : 0.002041875
serial : 0.408375
q/sec : 4897.45944291399
|
こんな感じで出力されます。
パラメータの意味
# n:クライアント数
# r:実行回数(結果に表示されるqueriesは、n*rの回数)
出力結果の意味
clients : 10 # 同時アクセス数
queries : 200 # 全実行クエリ数
fastest : 0.001485 # 最速結果
slowest : 0.005046 # 最遅延処理結果
average : 0.002041875 # 平均処理結果
serial : 0.408375 # 全処理時間
q/sec : 4897.45944291399 # 1秒間に実行可能なクエリー数
|
サンプルのデータは、すべて同じもの ( WordPressの本物のデータから記事 ) を使って、SELECTで検索するときのパフォーマンスについて調べてみました。
およそ200件のデータから200回クエリを発行して、その平均値を求めたものです。
同じ処理を6回繰り返しています。
以降に、その最大値と最小値を除いた平均値(よく統計で用いる論理です)を算出したものを表にまとめてみました。
MySQL(データベース)処理速度の計測結果
以下は、実測値になります。
参考のため、評判のさくらのレンタルサーバ(さくらインターネット)のスペックとパフォーマンスの違い で調べたさくらインターネットの各プランでの計測結果と並べてみました。
詳細表示切替
ファイアバード |
さくらインターネット スタンダード |
さくらインターネット プレミアム |
さくらインターネット ビジネスプロ |
0.00445 ms
0.00115 ms
0.00055 ms
0.00058 ms
0.00066 ms
0.00072 ms
平均0.00078 ms というところですね。
|
0.00756 ms
0.00267 ms
0.00364 ms
0.00815 ms
0.00283 ms
0.00488 ms
平均0.00473 ms というところですね。
|
0.00186 ms
0.00189 ms
0.00194 ms
0.00200 ms
0.00187 ms
0.00185 ms
平均0.00189 ms というところですね。
|
0.00203 ms
0.00204 ms
0.00189 ms
0.00200 ms
0.00192 ms
0.00206 ms
平均0.00200 ms というところですね。
|
文字色は、min,max の値を意味します。
これは、かなり速いですね。
ただ、必ず、最初の1回目は時間が掛かります。何度やっても、最初の1回目は、最長処理時間になってしまいます。
これは、おそらくは、MySQLのチューニングの仕方が、さくらインターネットと違って、メモリを重視している感じを受けますね。
そのため、メモリにあがったテーブル情報については、かなりの高速化が図れている感じを受けます。
アクセスするテーブルがこの例のように少ない場合なら上記のようなパフォーマンスを得るでしょう。
しかし、一般的なCMSであれば、1サイトで使うテーブルは、10 - 20 テーブルはあるでしょうから、
それを満遍なくアクセスされたら、どこまでパフォーマンスが出るのか、ちょっと疑問も残るところです。
ただ、実際に利用している感覚からすると、確かに速いんですよね。
実測結果からも、1回目の異常な遅さを除けば、かなり速いです。
(50回ぐらい試してみましたが、上記の1回目が一番遅かったです。通常は、0.002 ms ± 0.001 ms くらいです)
ファイアバード(firebird)は、ネットオウル系でも中堅どころのサーバーですが、
これなら、レベル下の
ミニバードでもある程度速そうな感じですね。
まあ、いずれにしても、まずは、ご自身で確認されることをおすすめします。
お試し期間も2週間とたっぷりありますから、まずは、お試しあれ。
ファイアバード(firebird)の無料お試しのお申込みは、https://www.star.ne.jp/ から行うことができます。
口コミ・評判
口コミ・評判を投稿 :