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

推薦する

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...

VueはOSSを使用して画像や添付ファイルをアップロードします

OSS を使用して Vue プロジェクトに画像や添付ファイルをアップロードするここでは、写真のアップ...

WeChatアプレットを少なく使う方法(最適な方法)

序文私は less/sass を書くことに慣れていますが、小さなプログラムを開発するときには、まだ ...

CentOS7でパーティションのサイズを変更する方法

昨日、ある人のシステムのインストールを手伝ったのですが、自動パーティション分割をクリックするのを忘れ...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

フレックスレイアウトは左のテキストオーバーフローを実現し、右のテキストの適応を省略します

テキストの長さに応じて、左側のテキストの幅を自動調整できる状況を実現したい。1行が表示できない場合、...

1 つの記事で v-model とその修飾子を学ぶ

目次序文v-model の修飾子:怠け者トリム番号さまざまな入力タイプやその他の要素での v-mod...

docker-compose を使用して Apollo カスタム環境をデプロイする詳細なチュートリアル

目次アポロ コンフィギュレーション センターとは何ですか?アポロの特徴クライアントアーキテクチャアー...

CentOS 7 で MySQL 接続数が 214 に制限される問題の解決方法

問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...

CSS のみを使用して折りたたまれたヘッダー効果を作成する方法の例コード

折りたたまれたヘッダーは、特別オファーや重要なお知らせなど、ユーザーにとって重要な情報を表示するのに...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

序文tcpdump はよく知られたコマンドライン パケット分析ツールです。 tcpdump コマンド...

CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...

MySQL IFNULL判定問題の解決方法

問題: mybatis によって返される null 型のデータが消え、フロントエンドの表示にエラーが...

LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

[LeetCode] 196.重複したメールを削除するSQL クエリを記述して、Person とい...