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はクーポンスタイルを実装するために放射状グラデーションを使用します

推薦する

Nginxはhttpとhttpsの両方のアクセスをサポートするために同じドメイン名を設定します

Nginx は同じドメイン名で構成されており、http と https の両方でアクセスできます。証...

MySQL の nvl() 関数に似た ifnull() 関数についての簡単な説明

IFNULL(式1,式2) expr1 が NULL でない場合、IFNULL() は expr1 ...

jsは赤い封筒の順序と量を指定するアルゴリズムを実装します

この記事では、指定された赤い封筒の順序と金額を実装するためのjsの具体的なコードを共有します。具体的...

Vue3 がコンポーネント通信に mitt を使用する手順

目次1. インストール2. プロジェクトにインポートしてマウントする3. 使用Vue2.x はコンポ...

MySQLの共通関数を使用してJSONを処理する方法

公式ドキュメント: JSON 関数名前説明JSON_APPEND() JSONドキュメントにデータを...

MySQL 5.6 圧縮パッケージのインストール方法

MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...

JavaScript 配列メソッド - 体系的な概要と詳細な説明

目次一般的な配列メソッド配列要素の追加と削除配列ヘッダーの操作配列の末尾を操作する任意の場所に追加ま...

Linux 環境の Apache で https サービスを有効にする方法の詳細な説明

この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...

Nginx リバース プロキシはポート 80 のリクエストを 8080 に転送します

まず、一連の概念を理解しましょう。nginx リバース プロキシとは何でしょうか?リバース プロキシ...

node.js で PC 上の WeChat アプレット パッケージを復号化するための処理アイデア

目次アプレットのソースコードはどこにありますか? PC ミニプログラムはどのように暗号化されますか?...

PC/Pad/Phoneデバイスに自動的に適応するCSSウェブページレスポンシブレイアウト

序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

Nginx インストール エラーの解決方法

1. nginx-1.8.1.tar.gzを解凍する2. fastdfs-nginx-module-...

vue+element カスタムクエリコンポーネント

この記事では主に Vue プロジェクトを紹介します。要素の導入を前提として、コンポーネントを 2 回...

VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)

1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...