地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

mysqlslapを使ったロードエミュレーション

dev.mysql.com

mysqlslapは,MySQLの負荷をエミュレーションできるクライアントアプリケーション。MySQLが公式でサポートしているツールになります。並列実行数やSQLの自動生成など機能豊富で色々な負荷試験ができそうです。MySQLをインストールすると、デフォルトでインストールされます。

実行してみる

$ mysqlslap [オプション]

# 実行サンプル。ほぼmysql-cliと同じオプションで認証とかができる
$ mysqlslap \
  --no-defaults \
  --concurrency=50 \
  --iterations=10 \
  --engine=innodb \
  --auto-generate-sql \
  --auto-generate-sql-add-autoincrement \
  --auto-generate-sql-load-type=mixed \
  --auto-generate-sql-write-number=1000 \
  --number-of-queries=100000 \
  --host=localhost \
  --port=3306 \
  --user=root

このほかにも * --auto-generate-sql-write-numberで各スレッドで実行する行挿入の回数を指定できる。 * --auto-generate-sql-load-type=にタイプ(mixed、read、write など)を指定すると負荷テストを指定したもので自動生成します

結果はこんな感じで見れます。

Benchmark
    Running for engine innodb
    Average number of seconds to run all queries: 0.015 seconds → 平均実行時間
    Minimum number of seconds to run all queries: 0.015 seconds → 最小実行時間
    Maximum number of seconds to run all queries: 0.015 seconds → 最大実行時間
    Number of clients running queries: 1                                                → クライアントの数
    Average number of queries per client: 0                                         → 1クライアントが発行したSQLの数