LoginSignup
21
20

More than 5 years have passed since last update.

mysqlslap で MySQL の負荷テストをする方法

Posted at

mysqlslap は MySQL の負荷テストに使えるツールです。MySQL >= 5.1.4 からはデフォルトで提供されています。

テスト中は mysqlslap という DB を自動で作って、そこにクエリを投げまくります。

以下に基本的な使い方をメモしておきます。

使い方

mysqlslap -? で詳しいヘルプが見られます。典型的な例は下記。

mysqlslap \
  --no-defaults \
  --concurrency=50 \
  --iterations=1 \
  --number-int-cols=2 \
  --number-char-cols=3 \
  --engine=innodb \
  --auto-generate-sql \
  --auto-generate-sql-add-autoincrement \
  --auto-generate-sql-load-type=key \
  --auto-generate-sql-write-number=1000 \
  --number-of-queries=100000 \
  --host=localhost \
  --port=3306 \
  --user=root \
  --csv=/tmp/bench_result.csv
パラメータ 意味
no-defaults my.cnf に書かれたデフォルト値を無視する。このオプションは先頭に付ける必要がある
concurrency 同時に接続してくるクライアントの数
iterations テストの試行回数
number-int-cols テストテーブルに作る INT 型カラムの数
number-char-cols テストテーブルに作る VARCHAR 型カラムの数
engine 使用する DB エンジン
auto-generate-sql テストで使用する SQL 文を自動で生成する
auto-generate-sql-add-autoincrement 自動で作ったテーブルに AUTO_INCREMENT カラムを追加する
auto-generate-sql-load-type クエリのタイプ。`[mixed
auto-generate-sql-write-number スレッド毎の INSERT 文の発行数。デフォルトは 100
number-of-queries 各クライアントが投げるクエリの上限数。正確にこの値にはならない
host ホスト
port ポート番号
user ベンチマークを実行するユーザー。DB 作成権限が無いユーザーを指定するとテストできないので注意!
csv 結果を CSV 形式で取得したい時は、ここに出力先のパスを書く

結果は以下のように出力されます。

Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 16.086 seconds
        Minimum number of seconds to run all queries: 16.086 seconds
        Maximum number of seconds to run all queries: 16.086 seconds
        Number of clients running queries: 50
        Average number of queries per client: 2000

参考

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20