38
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

1分でできる!mysqlslapでDBのかんたん性能調査、ベンチマーク

業務中にそこそこ大きなスキーマ変更をすることになり、実際パフォーマンスに変化があるかベンチマークを取る必要が出てきました。

jmeterとかでごりょごりょとかしないとなのかーとか思ったのですが、
今回はスキーマ変更のみなので、単純にDBのみの測定でよいので、なんかいいツールはないかと探したところ、

mysqlslapなるものがあるようなので試してみました

4.5.7 mysqlslap — Load Emulation Client

mysqlslapはMySQLサーバのクライアント負荷をエミュレートし、各ステージのタイミングを報告する診断プログラムです。サーバにたいして複数のクライアントがアクセスしているかのように作動します。mysqlslapはMySQL 5.1.4.から提供されています。

さっそく試してみーる

使い方

mysqlがインストールされていれば標準でmysqlslapもインストールされているはずなので、すぐ使えます

基本的には、測定する際特定のスキーマを作って、テキトーなクエリを実行してベンチマークを取る感じのようですが、
今回は実際の本番相当のデータ量のテーブルを用意し、それに対して測定を行いました。

#SQL

SELECT * FROM TMP_TABLE WHERE hoge = 'hoge'
/usr/local/mysql/bin/mysqlslap\
 --no-defaults\
 --user=USER\
 --password=PASS\
 --host=localhost\
 --port=3306\
 --engine=innodb\
 --concurrency=500\
 --iterations=30\
 --create-schema=TMP_DB\
 --query="SELECT * FROM TMP_TABLE WHERE hoge = 'hoge'"


Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.755 seconds
        Minimum number of seconds to run all queries: 0.702 seconds
        Maximum number of seconds to run all queries: 0.795 seconds
        Number of clients running queries: 500
        Average number of queries per client: 1

的な感じでベンチマーク取れます!
500回SELECTするのを30回行い、それらの最大最小平均が取れます

オプション

オプション 内容
no-defaults 設定ファイルに書かれたデフォルトをスキップ
user 接続ユーザ
password パスワード
host mysqlのhost
port mysqlのpoot
engine 対象ストレージエンジン
concurrency シミュレートする実行の数
iterations 実行するテストの回数
create-schema テストを実行するスキーマ
query 実行するクエリ(ファイル指定も可能)

今回は作成済みのDB、テーブルに対して実行したのですが、
他にもテキトーなクエリを自動生成して、ベンチマークを取ることもできるようです。
というかそのほうが本来の使い方っぽいですね。。。

設定ファイルいじって性能確認する的な。

ともあれとってもお手軽!

ベンチマークというと手間かかるなーと思いがちですが、
これなら、実装後にさくっと確認できていい感じです!

もっと早く知りたかった・・・!


感謝致します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
38
Help us understand the problem. What are the problem?