MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

導入

MySQL は最も人気のあるオープンソース データベースとして、さまざまな分野で広く使用されています。MySQL DBA は、データベースのパフォーマンス テストを頻繁に実行して、ビジネス プレッシャーを積極的 (または受動的) に評価し、現在のデータベース負荷と最高のパフォーマンス容量を決定します。

一般的なパフォーマンス テスト ツールには、sysbench と tpcc があります。どちらも優れたストレス テスト ツールですが、特別なコンパイルまたはインストール、および特定のテスト ステートメントを変更する特定の開発機能が必要です。

mysqlslap は MySQL をインストールすると自動的にインストールされ、多くのカスタム テスト関数を外部にカプセル化します。ユーザーはテスト ステートメントをカスタマイズするために外部に SQL ステートメント スクリプトを提供するだけで済むため、使いやすくなります。

説明書

mysqlslap は、テスト項目の種類を設定するための多くのパラメータを提供します。ここでは、説明のためにいくつかの一般的なパラメータのみを取り上げます。詳細については、mysqlslap 自体のヘルプ情報を参照してください。

パラメータ名

例示する

ログインパス=#

MySQLの新バージョンで提供されるログイン方法

-a、--自動生成SQL

SQL文を自動生成する

--auto-generate-sql-add-autoincrement

自動生成されたテーブルに自動増分列を追加する

--auto-generate-sql-execute-number=#

テスト中に実行されたSQL文の合計数

--自動生成SQL GUIDプライマリ

GUIDベースの主キーを生成する

--auto-generate-sql-load-type=名前

テストの負荷モデルには、混合、更新、書き込み、キー、読み取りが含まれます。デフォルトは混合です。

--auto-generate-sql-secondary-indexes=#

自動生成されたテーブル内のセカンダリインデックスの数

--auto-generate-sql-unique-query-number=#

テストでユニークインデックスを使用したクエリの数

--auto-generate-sql-unique-write-number=#

テスト中に一意のインデックスを使用したDMLステートメントの数

--auto-generate-sql-write-number=#

テスト中に各スレッドによって実行される挿入ステートメントの数は、デフォルトでは 100 です。

--コミット=#

テスト中は、数文ごとにコミットが実行される

-c, --concurrency=名前

テスト中の同時スレッド/クライアントの数

--create=名前

カスタムテーブル作成ステートメント、またはSQLファイルのアドレス

--create-schema=名前

テストで使用されるデータベース名

--デタッチ=#

テスト中、一定数のステートメントを実行した後に再接続します

-e, --engine=名前

テーブルを作成するときにストレージエンジンを指定する

-h, --host=名前

テストインスタンスのホストアドレスを指定します

-u, --user=名前

テストインスタンスのユーザー名を指定します

-p, --password=名前

テストインスタンスのパスワードを指定します

-P, --port=#

テストインスタンスのポートを指定する

-i, --iterations=#

テストを繰り返す回数を指定します

--ドロップなし

テストが完了した後、テストに使用されたライブラリ テーブルは削除されません。

-x, --number-char-cols=名前

テストテーブル内のvarchar列の数を指定します

-y, --number-int-cols=名前

テストテーブル内のint列の数を指定します

--クエリ数=#

各スレッドで実行される SQL ステートメントの数の上限を指定します (不正確)

--only-print

ドライランと同様に、出力は実行されますが、実際には実行されません。

-F, --delimiter=名前

ファイルで提供されるSQL文を使用する場合は、文間の区切り文字を明示的に指定します。

--post-query=名前

テスト完了後に実行するクエリ文、またはSQL文のファイルを指定します。

--pre-query=名前

テスト開始前に実行するクエリ文、またはSQL文のファイルを指定します。

-q, --query=名前

テスト中に実行されるクエリステートメント、またはSQLステートメントのファイルを指定します。

実際の経験

以下は、mysqlslap の簡単なトライアルです。ターゲット インスタンスは Tencent Cloud Database MySQL を使用します。最も簡単なテスト例は次のとおりです。

root@VM-64-10-debian:~# mysqlslap --concurrency=100 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.1.100.10 -uroot -p
パスワードを入力してください:
ベンチマーク
	エンジン innodb の実行
	すべてのクエリを実行するのにかかった平均秒数: 0.046 秒
	すべてのクエリを実行するのに要する最小秒数: 0.042 秒
	すべてのクエリを実行する最大秒数: 0.049 秒
	クエリを実行しているクライアントの数: 100
	顧客あたりの平均クエリ数: 10

ルート@VM-64-10-debian:~#

この例では、mysqlslap がすべてのテスト ステートメントとテーブル作成ステートメントを自動的に生成する最も単純なテスト モデルを使用します。

異なる同時実行条件下でのパフォーマンスを比較する場合は、次の方法でテストできます。

root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -p
パスワードを入力してください:
ベンチマーク
	エンジン innodb の実行
	すべてのクエリを実行するのにかかった平均秒数: 0.046 秒
	すべてのクエリを実行するのに要する最小秒数: 0.045 秒
	すべてのクエリを実行する最大秒数: 0.048 秒
	クエリを実行しているクライアントの数: 100
	顧客あたりの平均クエリ数: 10

ベンチマーク
	エンジン innodb の実行
	すべてのクエリを実行するのにかかった平均秒数: 0.037 秒
	すべてのクエリを実行するのに要する最小秒数: 0.034 秒
	すべてのクエリを実行する最大秒数: 0.052 秒
	クエリを実行しているクライアントの数: 200
	クライアントあたりの平均クエリ数: 5

ルート@VM-64-10-debian:~#

出力結果は時間なので、時間が短いほど全体的なパフォーマンスは向上します。

テスト ステートメントをカスタマイズする場合は、ファイルに SQL ステートメントを記述できます。次に例を示します。

root@VM-64-10-debian:~# cat create.sql
テーブルa(b int)を作成します。aに値を挿入します(23)。
root@VM-64-10-debian:~# cat クエリ.sql
* から a を選択;
a から b を選択します。
ルート@VM-64-10-debian:~#
root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --query=query.sql --create=create.sql --delimiter=";" --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -p
パスワードを入力してください:
ベンチマーク
	エンジン innodb の実行
	すべてのクエリを実行するのにかかった平均秒数: 0.045 秒
	すべてのクエリを実行するための最小秒数: 0.045 秒
	すべてのクエリを実行する最大秒数: 0.045 秒
	クエリを実行しているクライアントの数: 100
	顧客あたりの平均クエリ数: 10

ベンチマーク
	エンジン innodb の実行
	すべてのクエリを実行するのにかかった平均秒数: 0.023 秒
	すべてのクエリを実行するのに要する最小秒数: 0.023 秒
	すべてのクエリを実行する最大秒数: 0.023 秒
	クエリを実行しているクライアントの数: 200
	クライアントあたりの平均クエリ数: 5

ルート@VM-64-10-debian:~#

まとめ

市場には多くの MySQL ストレス テスト ツールが存在し、それぞれのツールには長所と短所があります。ツールについて詳しく理解し、実際のニーズに応じて最適なツールを選択することで、必要なストレス テストを最も効率的に完了できます。

以上がMySQLの公式パフォーマンステストツールmysqlslapの使い方の詳しい紹介です。mysqlslapの使い方の詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • MySQL ストレステストツール Mysqlslap の使用
  • MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明
  • MySQL ストレステストツール mysqlslap の紹介と使用
  • MySQL ストレス テスト方法 mysqlslap を使用して MySQL ストレスをテストする方法は?
  • Mysqlslap MySQL ストレステストツールの簡単なチュートリアル

<<:  JavaScript オブジェクトを作成する 3 つの方法

>>:  CSSはクーポンスタイルを実装するために放射状グラデーションを使用します

推薦する

Dockerデータストレージのバインドマウントの詳細な説明

この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こち...

MySQL ロックの知識ポイントのまとめ

ロックの概念①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータ...

iframe を介してフレームセットを本体に配置する

フレームセットと本文は同じレベルにあるため、本文にフレームセットを配置することはできません。まずペー...

html2canvas で破線境界線を実装する例

html2canvas は、HTML 要素からキャンバスを生成するライブラリです。描画されるキャンバ...

Linux のファイル権限とグループ変更コマンドの詳細な説明

Linux では、すべてがファイルであり (ディレクトリもファイルです)、各ファイルにはユーザーに対...

メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。

コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...

JavaScript配列についてさらに詳しく知るのに役立つ記事

目次1. 配列の役割: 2. 配列の定義: 1. コンストラクタを通じて配列を作成する2. リテラル...

mysql order by in の文字順序の詳細な説明 (推奨)

//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...

MySQL のインデックスとビューの使用方法と違いの詳細な説明

序文この記事では主に、MySQL のインデックスとビューの使用方法と違いを紹介し、参考と学習のために...

Vueのコンポーネント値の転送から始まるオブザーバーモードの詳細な説明

目次オブザーバーパターンVue パス値最初のステップは、main.jsにバスを登録することです。 2...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...

Idea で Tomcat のソースコードデバッグを開始し、デバッグのために Tomcat に入る方法

idea 開発ツールを使用してコードをデバッグする場合、Java Web プロジェクトで、Web コ...

MySQL で期限切れのデータレコードを定期的に削除する簡単な方法

1. MySQL に接続してログインしたら、まず MySQL でイベント機能が有効になっているかどう...

Docker で LNMP 環境を素早く構築する方法 (最新)

序文ヒント: ここで、この記事に記録するおおよその内容を追加できます。例えば、人工知能の継続的な発展...

負のマージントップ値は、ラベルテキストと入力の間の垂直中央揃えの問題を解決します。

ラベルテキストと入力の垂直方向の中央揃えを調整するのは簡単ではありません。padding、verti...