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

推薦する

MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...

Vue+SpringBoot のフロントエンドとバックエンドの分離におけるクロスドメインの問題

フロントエンドとバックエンドを分離した開発では、フロントエンドがバックエンドの API を呼び出して...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

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

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

Vue の動的コンポーネントと非同期コンポーネントの詳細な理解

1. 動的コンポーネント <!DOCTYPE html> <html> &l...

HTMLページ埋め込み動画とJSコントロール切り替え動画例の詳しい説明

まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...

React Native が「NSArray<id<RCTBridgeModule>>型のパラメータを初期化できません」というエラーを報告する (解決方法)

最近、古い RN プロジェクトを Xcode で実行すると、次のコード エラーが報告されました。 &...

Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス

目次1. はじめに2. 環境とツール3. Dockerをインストールし、リモート接続を構成する4. ...

CSS3 の新しいレイアウト: flex の詳細な説明

Flexの基本概念フレックス レイアウト (フレックスはフレキシブル ボックスの略)、エラスティック...

CentOS7 での mysql 5.7.23 のバイナリ インストール

インターネット上のインストール情報は不均一で、落とし穴だらけです。インストールにはかなりの労力がかか...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

MySQLとOracleの違いを簡単に説明してください

1. Oracle は大規模データベースですが、MySQL は小規模から中規模のデータベースです。O...

アクティビティページでの CSS3 アニメーション効果の適用

背景あっという間に忙しい一年が終わり、毎年恒例のイベントの時期がやってきます。お祭り気分を演出するに...