そのまま使える! sysbenchを使ったMySQLのベンチマーク

MySQLのベンチマーク

インフラエンジニアやDBA、またはある程度技術力のある開発のエンジニアでMySQLを利用してサービスを提供している場合、何かしらベンチマークをおこなわなければならないシーンが発生するのではないでしょうか。

  • MySQLのメジャーバージョンを上げる前
  • インスタンスやサーバの移行前
  • システムのパフォーマンスが上がらない時
  • パラメータ設定を変更する前
  • とにかく性能にこだわりたい時

色々事情はあると思いますが、ベンチマークをおこなう時はなるべくシンプルに性能が比較できて、簡単なものがいいですよね。

MySQLのベンチマークツール

MySQLのベンチマークをおこなうときに利用できるツールはたくさんあります。比較的よく知られているものだと、下記のようなものになります。

  • mysqlslap
  • jdbcRunner
  • workbench
  • sysbench
  • tpcc-mysql

それぞれベンチマークの結果については特徴があるのですが、一番古くから利用されていて簡単なものがsysbenchです。sysbenchはそれほど細かい条件や環境に合わせた設定はできませんが、シンプルにパフォーマンスを比較するのであれば一番やりやすいでしょう。

その他で比較的設定が簡単なものであればtpcc-mysqlがおすすめです。クエリを指定したいのであればjdbcRunnerもいいでしょう。ベンチマークをおこなう条件によってもまちまちで、どれが一番いいとは一概には言えませんが、ここでは一番簡単に実施できて、利用している方も多いsysbenchの使い方をお伝えします。

sysbenchのインストール

  • ダウンロードとインストール
wget http://downloads.mysql.com/source/sysbench-0.4.12.5.tar.gz
tar xzvf sysbench-0.4.12.5.tar.gz
cd sysbench-0.4.12.5
./configure
make
make install
  • MySQLの準備
mysql>create database bench;
mysql>GRANT ALL ON bench.* TO benchuser@"localhost" IDENTIFIED BY "benchuser";
  • ベンチマーク用データのロードと使い方
/usr/local/bin/sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-user=benchuser --mysql-password=benchuser prepare
/usr/local/bin/sysbench  --test=oltp help

sysbenchを利用したベンチマーク方法

単純に実施するのであれば、下記を実施してexecution timeの比較のみでいいでしょう。スレッド数やリクエスト数は色々変えながら実施してください。あまり一瞬でベンチマークが終わってしまうと比較にならないので、ある程度時間がかかるくらいまで増やしていくのがいいでしょう。

/usr/local/bin/sysbench  --test=oltp  --oltp-table-size=1000000 --num-threads=4 --max-requests=20000 --max-time=0 --oltp-test-mode=complex
 --mysql-user=benchuser --mysql-password=benchuser run

insertやupdateのみのベンチマークを見たい場合は下記のように条件をかえてみましょう。

* パターン①
 /usr/local/bin/sysbench  --test=oltp  --oltp-table-size=1000000 --num-threads=4 --max-requests=20000 --max-time=0 --oltp-test-mode=nontrx
--oltp-nontrx-mode=insert --mysql-user=benchuser --mysql-password=benchuser run

* パターン②
 /usr/local/bin/sysbench  --test=oltp  --oltp-table-size=1000000 --num-threads=4 --max-requests=20000 --max-time=0 --oltp-test-mode=nontrx
--oltp-nontrx-mode=update_key --mysql-user=benchuser --mysql-password=benchuser run

* パターン③
 /usr/local/bin/sysbench  --test=oltp  --oltp-table-size=1000000 --num-threads=4 --max-requests=20000 --max-time=0 --oltp-test-mode=nontrx
--oltp-nontrx-mode=update_nokey --mysql-user=benchuser --mysql-password=benchuser run

ここでは最低限の使い方だけを説明してきましたが、helpを見れば細かい変更などもできるので、色々試してみながら実施していくのがいいでしょう。

MySQLの基本を学ぶならこちらがおすすめ

タイトルとURLをコピーしました