Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  mysqlslap — 負荷エミュレーションクライアント

4.5.7 mysqlslap — 負荷エミュレーションクライアント

mysqlslap は MySQL サーバーのクライアント負荷をエミュレートし、各段階のタイミングをレポートする診断プログラムです。複数のクライアントがサーバーにアクセスしているかのように作動します。

mysqlslap は次のように起動します。

shell> mysqlslap [options]

--create または --query などのオプションを使用すると、SQL ステートメントを含む文字列やステートメントを含むファイルを指定できます。ファイルを指定した場合、デフォルトでは各行に 1 つのステートメントを含んでいなければなりません。(つまり、暗黙的なステートメント区切り文字は改行文字です。)異なる区切り文字を指定するには、--delimiter オプションを使用します。これにより、複数行にわたるステートメントを指定したり、1 行に複数のステートメントを配置したりできます。ファイルにコメントを含めることはできません。mysqlslap はそれらを理解しません。

mysqlslap は次の 3 段階で実行されます。

  1. テストに使用するスキーマ、テーブル、およびオプションでストアドプログラムまたはデータを作成します。この段階では、1 つのクライアント接続を使用します。

  2. 負荷テストを実行します。この段階では、多数のクライアント接続を使用できます。

  3. クリーンアップ (接続の解除、指定した場合はテーブルの削除) を実行します。この段階では、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 は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlslap] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.11 mysqlslap のオプション

形式 説明 導入
--auto-generate-sql SQL ステートメントがファイルおよびコマンドオプションを使用して指定されない場合、自動的に生成  
--auto-generate-sql-add-autoincrement AUTO_INCREMENT カラムを自動生成されたテーブルに追加  
--auto-generate-sql-execute-number 自動的に生成するクエリーの数を指定  
--auto-generate-sql-guid-primary 自動生成されたテーブルに GUID ベースの主キーを追加  
--auto-generate-sql-load-type 自動的に生成するクエリーの数を指定  
--auto-generate-sql-secondary-indexes 自動生成されたテーブルに追加するセカンダリインデックスの数を指定  
--auto-generate-sql-unique-query-number 自動テスト用に生成する異なるクエリーの数。  
--auto-generate-sql-unique-write-number --auto-generate-sql-write-number 用に生成する異なるクエリーの数  
--auto-generate-sql-write-number 各スレッドで実行する行挿入の回数  
--commit コミットの前に実行するステートメントの数。  
--compress クライアントとサーバー間で送信される情報をすべて圧縮  
--concurrency SELECT ステートメントを発行する際、シミュレートするクライアントの数  
--create テーブルの作成に使用するステートメントを含むファイルまたは文字列  
--create-schema テストを実行するスキーマ  
--csv カンマ区切りの値の形式で出力を生成  
--debug デバッグのログを書き込み  
--debug-check プログラムの終了時にデバッグ情報を出力  
--debug-info プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力  
--default-auth 使用する認証プラグイン 5.6.2
--defaults-extra-file 通常のオプションファイルに加えてオプションファイルを読み取る  
--defaults-file 指名されたオプションファイルのみを読み取る  
--defaults-group-suffix オプショングループのサフィクス値  
--delimiter SQL ステートメントで使用する区切り文字  
--detach N 個のステートメントが終わるごとに各接続を切り離す (閉じてからふたたび開く)  
--enable-cleartext-plugin 平文の認証プラグインを有効化 5.6.7
--engine テーブルの作成に使用するストレージエンジン  
--help ヘルプメッセージを表示して終了  
--host 指定されたホスト上で MySQL サーバーに接続  
--iterations 実行するテストの回数  
--login-path ログインパスオプションを .mylogin.cnf から読み取り 5.6.6
--no-defaults オプションファイルを読み取らない  
--no-drop テスト実行中に作成されたスキーマを削除しない 5.6.3
--number-char-cols --auto-generate-sql が指定された場合に使用する VARCHAR カラムの数  
--number-int-cols --auto-generate-sql が指定された場合に使用する INT カラムの数  
--number-of-queries 各クライアントのクエリー数をおよそこの数に制限  
--only-print データベースに接続しない。mysqlslap が実行したであろう内容を出力するのみ  
--password サーバーに接続する際に使用するパスワード  
--pipe Windows で、名前付きパイプを使用してサーバーに接続  
--plugin-dir プラグインがインストールされているディレクトリ 5.6.2
--port 接続に使用する TCP/IP ポート番号  
--post-query テスト完了後に実行するステートメントを含むファイルまたは文字列  
--post-system テスト完了後に system() を使用して実行する文字列  
--pre-query テストの実施前に実行するステートメントを含むファイルまたは文字列  
--pre-system テストの実施前に system() を使用して実行する文字列  
--print-defaults デフォルトを出力  
--protocol 使用する接続プロトコル  
--query データ取得のために使用する SELECT ステートメントを含むファイルまたは文字列  
--secure-auth 古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない 5.6.17
--shared-memory-base-name 共有メモリー接続に使用する共有メモリーの名前  
--silent サイレントモード  
--socket ローカルホストへの接続で、使用する Unix ソケットファイル  
--ssl 接続に SSL を有効化  
--ssl-ca 信頼された SSL CA のリストを含むファイルのパス  
--ssl-capath 信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス  
--ssl-cert PEM 形式の X509 証明書を含むファイルのパス  
--ssl-cipher SSL の暗号化に使用される、許可された暗号のリスト  
--ssl-crl 証明書失効リストを含むファイルのパス 5.6.3
--ssl-crlpath 証明書失効リストファイルを含むディレクトリのパス 5.6.3
--ssl-key PEM 形式の X509 鍵を含むファイルのパス  
--ssl-verify-server-cert サーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証  
--user サーバーへの接続時に使用する MySQL ユーザー名  
--verbose 冗長モード  
--version バージョン情報を表示して終了  

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --auto-generate-sql, -a

    SQL ステートメントがファイルおよびコマンドオプションを使用して指定されない場合、自動的に生成します。

  • --auto-generate-sql-add-autoincrement

    AUTO_INCREMENT カラムを自動生成されたテーブルに追加します。

  • --auto-generate-sql-execute-number=N

    自動的に生成するクエリーの数を指定します。

  • --auto-generate-sql-guid-primary

    自動生成されたテーブルに GUID ベースの主キーを追加します。

  • --auto-generate-sql-load-type=type

    テストの負荷タイプを指定します。許可される値は、read (テーブルのスキャン)、write (テーブルに挿入)、key (主キーの読み取り)、update (主キーの更新)、または mixed (挿入とスキャンして選択が半分ずつ) です。デフォルトは mixed です。

  • --auto-generate-sql-secondary-indexes=N

    自動生成されたテーブルに追加するセカンダリインデックスの数を指定します。デフォルトでは、何も追加されません。

  • --auto-generate-sql-unique-query-number=N

    自動テスト用に生成する異なるクエリーの数。たとえば、1000 回の選択を行う key テストを実施する場合、このオプションの値を 1000 にして一意のクエリーを 1000 個実行することも、値を 50 にして異なるクエリーを 50 回行うこともできます。デフォルトは 10 です。

  • --auto-generate-sql-unique-write-number=N

    --auto-generate-sql-write-number 用に生成する異なるクエリーの数を指定します。デフォルトは 10 です。

  • --auto-generate-sql-write-number=N

    各スレッドで実行する行挿入の回数を指定します。デフォルトは 100 です。

  • --commit=N

    コミットの前に実行するステートメントの数。デフォルトは 0 (コミットは行われない) です。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --concurrency=N, -c N

    SELECT ステートメントを発行する場合に、シミュレートするクライアントの数。

  • --create=value

    テーブルの作成に使用するステートメントを含むファイルまたは文字列。

  • --create-schema=value

    テストを実行するスキーマ。

    注記

    --auto-generate-sql オプションも指定されている場合、mysqlslap はテスト実行の最後にスキーマを削除します。これを避けるには、--no-drop オプションも使用します。

  • --csv[=file_name]

    カンマ区切りの値の形式で出力を生成します。出力は指定されたファイルか、ファイルが指定されていない場合標準出力に送られます。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o,/tmp/mysqlslap.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth =plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlslap は通常 [client] グループおよび [mysqlslap] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlslap[client_other] グループおよび [mysqlslap_other] グループも読み取ります。

  • --delimiter=str, -F str

    ファイルまたはコマンドオプションを使用して提供される SQL ステートメントで使用される区切り文字。

  • --detach=N

    N 個のステートメントごとに各接続を切り離します (閉じてからふたたび開きます)。デフォルトは 0 (接続は切り離されない) です。

  • --enable-cleartext-plugin

    mysql_clear_password 平文認証プラグインを有効にします。(セクション6.3.8.7「クライアント側のクリアテキスト認証プラグイン」を参照してください。)このオプションは MySQL 5.6.7 で追加されました。

  • --engine=engine_name, -e engine_name

    テーブルの作成に使用するストレージエンジンを指定します。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --iterations=N, -i N

    実行するテストの回数。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-drop

    mysqlslap がテスト実行中に作成するスキーマをドロップしないようにします。このオプションは MySQL 5.6.3 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --number-char-cols=N, -x N

    --auto-generate-sql が指定されている場合に使用する VARCHAR カラムの数。

  • --number-int-cols=N, -y N

    --auto-generate-sql が指定されている場合に使用する INT カラムの数。

  • --number-of-queries=N

    各クライアントのクエリー数をおよそこの数に制限します。クエリーのカウントには、ステートメント区切り文字が考慮されます。たとえば、mysqlslap を次のように起動する場合、; 区切り文字が認識され、クエリー文字列の各インスタンスは 2 つのクエリーとカウントされます。その結果、(10 ではなく) 5 つの行が挿入されます。

    shell> mysqlslap --delimiter=";" --number-of-queries=10
             --query="use test;insert into t values(null)"
    
  • --only-print

    データベースには接続しません。mysqlslap は、実行したであろう内容を出力するだけです。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlslap はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlslap がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --post-query=value

    テスト完了後に実行するステートメントを含むファイルまたは文字列。この実行は、タイミングの目的ではカウントされません。

  • --post-system=str

    テスト完了後に system() を使用して実行する文字列。この実行は、タイミングの目的ではカウントされません。

  • --pre-query=value

    テストの実行前に実行するステートメントを含むファイルまたは文字列。この実行は、タイミングの目的ではカウントされません。

  • --pre-system=str

    テストの実行前に system() を使用して実行する文字列。この実行は、タイミングの目的ではカウントされません。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --query=value, -q value

    データ取得のため使用する SELECT ステートメントを含むファイルまたは文字列。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。このオプションは、サーバーが共有メモリー接続をサポートしている場合にのみ適用されます。

  • --silent, -s

    サイレントモード。出力はありません。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。このオプションは情報量を増加させるために複数回使用できます。

  • --version, -V

    バージョン情報を表示して終了します。


User Comments
Sign Up Login You must be logged in to post a comment.