SysBench で MySQL の性能測定(ベンチマーク)

SysBench で MySQL の性能測定(ベンチマーク)
あぱーブログ
2015年9月19日  カテゴリー:Linux  タグ: ,
Pocket
LINEで送る

SysBench は、CPUやメモリ、ディスクI/Oなど、さまざまなシステム性能を測定することができる、ベンチマークツールです。中でも、MySQLなどのデータベースのトランザクション処理の測定ができるのが特徴です。そこで今回は、SysBench を使って、MySQL のベンチマークテストをしてみたいと思います。

SysBench のインストール

EPELリポジトリからインストールします。サーバOSは、CentOS7.1です。

EPELリポジトリの追加

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

SysBench のインストール

yum -y install sysbench

EPELリポジトリの無効化
vim /etc/yum.repos.d/epel.repo

[epel]
(略)
enabled=1

enabled=0

下準備

測定用データベースの作成

SysBench が測定に使用するデータベース「sbtest」を作成します。

mysqladmin -u root -p create sbtest

SysBench 用のMySQLユーザの作成

上で作成した sbtest データベースのみに接続可能な、MySQLユーザ「sbtest」を作成します。SysBench はデフォルトで、この名前(sbtest)のユーザとデータベースを使用します。

mysql -u root -p
mysql> GRANT ALL ON sbtest.* TO 'sbtest'@'localhost' IDENTIFIED BY '<パスワード>';

測定用テーブルの作成

sysbench コマンドを使って、先ほど作成したデータベースに、測定用のテーブルを作成します。ストレージエンジンはデフォルトで innodb が使用されます。

sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
prepare

--test
 テストモードの指定です。MySQLなど、データベースのトランザクション処理の測定をする場合は「oltp」を指定します。

--db-driver
 データベースソフトの種類を指定します。MySQL(mysql)と、PostgreSQL(pgsql) が指定できます。

--oltp-table-size
 作成するテーブルのレコード数を指定します。実運用で想定されるレコード数を指定します。

--mysql-password
 先ほど作成した、MySQLユーザ「sbtest」のパスワードを指定します。

prepare
 テーブルの作成を実行します。

上記のコマンドを実行すると、1万レコードある下のようなテーブル作成されます。

MySQL の性能測定

いよいよ性能測定の実行です。今回は、同時接続数(--num-threads)は1、測定時間(--max-time)は60秒の条件で測定を行います。

sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
--num-threads=1 \
--max-requests=0 \
--max-time=60 \
--oltp-read-only=off \
run

--num-threads
 スレッド数の指定です。MySQLの同時接続数に該当します。

--max-requests
 測定で実行する最大リクエスト数です。「0」を指定すると無制限になります。

--max-time
 測定時間を秒数で指定します。「0」を指定すると無制限になります。

--oltp-read-only
 読み出しのみ測定する場合は「on」を指定します。「off」(デフォルト) を指定すると、読み書き両方の性能を測定します。

run
 測定を実行します。

上記以外にも指定できるオプションは沢山あります。詳細はコマンドヘルプ「sysbench --test=oltp help」をご参照ください。

上記のコマンドを実行すると、以下のような測定結果が表示されます。一般的にデータベースの性能は、TPS(トランザクション毎秒) が使われますので、transactions: → (4.22 per sec.) の値を指標にするのが良いかと思います。

終わりに

SysBench はコマンドのオプションが多いので、少し複雑に見えますが、使い方はとても簡単です。初めて使ってみましたが、インストールを含めて10分くらいで、MySQLの性能測定をすることができました。本番投入前の検証作業や、サーバ性能の比較などで使ってみてはいかがでしょうか。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です