mysqlslap は MySQL サーバーのクライアント負荷をエミュレートし、各ステージのタイミングを報告する診断プログラムです。複数のクライアントがサーバーにアクセスしているかのように作動します。mysqlslap は MySQL 5.1.4 以降のバージョンで利用できます。
mysqlslap は以下のように起動してください。
shell> mysqlslap [options
]
--create
や--query
といったオプションは
SQL
ステートメントを含む文字列やステートメントを含むファイルの特定を許容します。ファイルを特定した場合、デフォルトで各行ごとにステートメントを含んでいなければいけません。(つまり、暗示的なステートメント区切り文字は改行文字になります)。異なる区切り文字を指定するには、--delimiter
オプションを使用します。これにより、複数行にわたるステートメントを指定したり、1
行に複数のステートメントを配置したりできます。ファイルにコメントを含むことはできません。mysqlslap
はそれらを理解しません。
mysqlslap は次の 3 段階で実行されます。
テストに使用するスキーマ、テーブル、および必要に応じてストアドプログラムまたはデータを作成します。この段階では、1 つのクライアント接続を使用します。
負荷テストを実行します。この段階では、多数のクライアント接続を使用できます。
クリーンアップ (接続の解除、指定した場合はテーブルの削除) を行います。この段階では、1 つのクライアント接続を使用します。
例:
50 台のクライアントを使ってそれぞれ 200 回ずつのクエリーを行う、ユーザー独自の create および query SQL ステートメントを入力します。
mysqlslap --delimiter=";" \ --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \ --query="SELECT * FROM a" --concurrency=50 --iterations=200
mysqlslap に、2 つの
INT
カラムと
3 つの VARCHAR
カラムから成るテーブルを含む query SQL
ステートメントを構築させます。5
台のクライアントを使ってそれぞれ 20
回ずつクエリーを実行します。テーブルを作成したり、データを挿入したりしないでください
(直前のテストのスキーマとデータを使用します)。
mysqlslap --concurrency=5 --iterations=20 \ --number-int-cols=2 --number-char-cols=3 \ --auto-generate-sql
プログラムに、指定のファイルから
create、insert、および query SQL
ステートメントをロードするように指示します。この場合の
create.sql
ファイルには ';'
で区切られた複数のテーブル作成ステートメントと
';'
で区切られた複数の挿入ステートメントが含まれています。--query
ファイルには、';'
で区切られた複数のクエリーが格納されます。5
台のクライアントを使用して、すべての load
ステートメントを実行してから、query
ファイル内のすべてのクエリーを実行します
(それぞれ 5 回ずつ)。
mysqlslap --concurrency=5 \ --iterations=5 --query=query.sql --create=create.sql \ --delimiter=";"
mysqlslap は、次のリストに示すオプションをサポートします。また、オプションファイルを読み取り、Command-Line Options that Affect Option-File Handlingに説明されている、オプションファイルを処理するためのオプションもサポートします。
ヘルプメッセージを表示し、閉じます。
ファイルやコマンドオプションを介して提供されていない場合、SQL ステートメントを自動的に生成します。
--auto-generate-sql-add-autoincrement
AUTO_INCREMENT
カラムを自動生成されたテーブルに追加します。このオプションは
MySQL 5.1.18 で追加されました。
--auto-generate-sql-execute-number=
N
自動的に生成するクエリーの数を指定します。このオプションは MySQL 5.1.18 で追加されました。
--auto-generate-sql-guid-primary
GUID ベースの主キーを自動生成されたテーブルに追加します。このオプションは MySQL 5.1.18 で追加されました。
--auto-generate-sql-load-type=
type
テストの負荷型を指定します。使用できる値は、read
(テーブルのスキャン)、write
(テーブルへの挿入)、key
(主キーの読み取り)、update
(主キーの更新)、または
mixed
(挿入とスキャンを半々ずつ)
です。デフォルトは
mixed
です。このオプションは MySQL 5.1.16
で追加されました。
--auto-generate-sql-secondary-indexes=
N
自動生成されたテーブルに追加する二次インデックスの数を指定します。デフォルトでは、何も追加されません。このオプションは MySQL 5.1.18 で追加されました。
--auto-generate-sql-unique-query-number=
N
自動テスト用に生成する異なるクエリーの数を指定します。たとえば、1000
回のクエリーを行う
key
テストを実施する場合、このオプションの値を
1000 にして一意のクエリーを 1000
個実行することも、値を 50
にして異なるクエリーを 50
回行うこともできます。デフォルトは 10
です。このオプションは MySQL 5.1.18
で追加されました。
--auto-generate-sql-unique-write-number=
N
--auto-generate-sql-write-number
用に生成する異なるクエリーの数を指定します。デフォルトは
10 です。このオプションは MySQL 5.1.18
で追加されました。
--auto-generate-sql-write-number=
N
各スレッドで実行する行挿入の回数を指定します。デフォルトは 100 です。このオプションは MySQL 5.1.16 で追加されました。
コミットの前に実行するステートメントの数を指定します。デフォルトは 0 (コミットは行われない) です。このオプションは MySQL 5.1.21 で追加されました。
双方が圧縮をサポートしている場合、クライアント・サーバー間で行きかう情報をすべて圧縮します。
SELECT
ステートメントを発行している際、シミュレートするクライアントの数。
テーブルの作成に使用するステートメントを含むファイルまたは文字列を指定します。
テストを実行するスキーマ。このオプションは MySQL 5.1.5 で追加されました。
カンマによって分けられた値のフォーマットで出力を生成します。出力は名づけられたファイルか、ファイルが提供されていない場合標準出力に向かいます。このオプションは MySQL 5.1.5 で追加されました。
--debug[=
,
debug_options
]-#
[
debug_options
]
デバッグのログを書き込みます。debug_options
文字列は通常
'd:t:o,
になります。デフォルトは
file_name
''d:t:o,/tmp/mysqlslap.trace'
です。
プログラムが閉じるときに、デバッグ情報をプリントします。このオプションは MySQL 5.1.21 で追加されました。
プログラムの終了時にデバッグ情報と、メモリーおよび CPU 使用率の統計を表示します。このオプションは MySQL 5.1.21 で追加されました。
ファイルかコマンドオプションを介して提供された SQL ステートメントで使用する区切り文字です。
N
個のステートメントが終わるごとに各接続を切り離します
(閉じてから再び開きます)。デフォルトは 0
(接続は切り離されない)
です。このオプションは MySQL 5.1.21
で追加されました。
--engine=
,
engine_name
-e
engine_name
テーブルの作成に使用するストレージエンジンを指定します。
--host=
,
host_name
-h
host_name
与えられたホスト上で MySQL サーバーに接続します。
実行するテストの回数。
ロックの保存に使用するディレクトリです。このオプションは MySQL 5.1.5 で追加され、MySQL 5.1.18 で削除されました。
--auto-generate-sql
が指定されている場合に使用する
VARCHAR
カラムの数です。
--auto-generate-sql
が指定されている場合に使用する
INT
カラムの数です。
各クライアントをこのクエリーの数に限定します。このオプションは MySQL 5.1.5 で追加されました。
データベースには接続しません。mysqlslap によって実行されたと思われる内容を出力するだけです。このオプションは MySQL 5.1.5 で追加されました。
--password[=
,
password
]-p[
password
]
サーバーに接続する際に使用するパスワードです。ショートオプションフォーム
(-p
)
を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で
--password
または
-p
オプションに続く
password
値を省略した場合は、それを入力するよう要求されます。
コマンドライン上でのパスワードの特定は安全ではありません。End-User Guidelines for Password Security を参照してください。
Windows では、名前付きパイプを介してサーバーに接続します。このオプションは、ローカルサーバーへの接続で、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。
接続に使用する TCP/IP ポート番号です。
テスト完了後に実行するステートメントを含むファイルまたは文字列を指定します。この実行は、タイミングの目的ではカウントされません。このオプションは MySQL 5.1.18 で追加されました。
--shared-memory-base-name=
name
Windows では、共有メモリーを介してローカルサーバーに接続する際に使用する共有メモリー名です。このオプションは、サーバーが共有メモリー接続をサポートしている場合にのみ適用されます。
テスト完了後に
system()
を介して実行する文字列を指定します。この実行は、タイミングの目的ではカウントされません。このオプションは
MySQL 5.1.21 で追加されました。
テストの実施前に実行するステートメントを含むファイルまたは文字列を指定します。この実行は、タイミングの目的ではカウントされません。このオプションは MySQL 5.1.18 で追加されました。
テストを実施する前に
system()
を介して実行する文字列を指定します。この実行は、タイミングの目的ではカウントされません。このオプションは
MySQL 5.1.21 で追加されました。
mysqlslap
の実行からスキーマを保存します。--auto-generate-sql
オプションと
--create
オプションはこのオプションを無効にします。このオプションは
MySQL 5.1.5 で追加され、MySQL 5.1.23
で削除されました。
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用する接続プロトコルを指定します。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。使用できる値の詳細は、Connecting to the MySQL Serverを参照してください。
データ回収のため使用する
SELECT
ステートメントを含むファイルか文字列。
サイレントモード。出力はありません。
ほかの mysqlslap
クライアントに対してマスタロックをフォローしてください。このオプションは、1
台前後のマスターサーバーを
--lock-directory
および
NFS
に同期させようとしている場合に使用します。このオプションは
MySQL 5.1.5 で追加され、MySQL 5.1.18
で削除されました。
localhost
の接続用に使用する、UNIX
ではソケットファイル、Windows
では使用する名づけられたパイプ。
--ssl
で始まるオプションは、SSL
を介してサーバーに接続し、SSL
キーや証明の場所を明示するか否かを指定します。SSL Command Options
を参照してください。
Unix では、デフォルトで
fork()
呼び出しが使用され、このオプションを指定すると、代わりに
pthread
呼び出しが使用されます。(Windows
では、デフォルトで
pthread
呼び出しが使用され、オプションを指定しても効果がありません。)このオプションは
MySQL 5.1.6 で追加され、MySQL 5.1.18
で削除されました。
--user=
,
user_name
-u
user_name
サーバーへの接続時に使用する MySQL ユーザー名です。
冗長モード。プログラム実行に関する情報を出力する。このオプションは情報量を増加させるために複数回使用することができます。
バージョン情報を表示し、閉じます。