ホームページ  >  記事  >  データベース  >  MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

PHPz
PHPz転載
2023-05-26 18:41:222234ブラウズ

1. パフォーマンス指標の概要

QPS (Queries Per Second) は 1 秒あたりのクエリ数で、データベースの場合は 1 秒あたりにデータベースによって実行される SQL の数です (クエリを含む)。挿入、選択、更新、削除など)。
TPS (Transactions Per Second) は、1 秒あたりのトランザクション数です。データベースの場合、TPS は、成功したコミットの数に基づいて、データベースによって 1 秒あたりに実行されるトランザクションの数です。
IOPS 1 秒あたりにディスクによって実行される I/O 操作の数

2. インジケーターの計算方法

2.1 TPS

適用対象innodb 1 秒あたりのトランザクション数 (1 秒あたりに送信されるトランザクションの数)、つまり、1 秒あたりにサーバーによって処理されるトランザクションの数
一般に、評価システムのパフォーマンスは、1 秒あたりに完了する技術トランザクションの数によって測定されます。システム全体の処理能力は、処理能力が最も低いモジュールの TPS 値によって決まります。

mysql> SHOW GLOBAL STATUS LIKE 'Com_commit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_commit    | 22402 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_rollback  | 0     |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Uptime'
    -> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 3319  |
+---------------+-------+
1 row in set (0.01 sec)
TPS=(Com_commit + Com_rollback)/Uptime

MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

2.2 QPS

InnoDB エンジンと MyISAM エンジンの両方に適用可能 1 秒あたりのクエリ レート (QPS) は、指定された期間内に特定のクエリ サーバーが処理するトラフィック量の尺度であり、フェッチ/秒、つまり 1 秒あたりの応答リクエストの数に相当します。これは最大スループット能力です

MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

2.3 IOPS

IOPS (Input/Output Per Second) は入出力量 ( 1 秒あたりの読み取りと書き込みの数)、これはディスク パフォーマンスの主な指標です。 IOPS は、システムが単位時間あたりに処理できる I/O リクエストの数を指します。通常、1 秒あたりに処理される I/O リクエストの数で測定されます。I/O リクエストは通常​​、読み取りまたは書き込みデータ操作リクエストです。 OLTP (オンライン トランザクション処理) など、ランダムな読み取りと書き込みが頻繁に行われるアプリケーションの場合、IOPS は重要な測定指標です。もう 1 つの重要な指標はデータ スループット (Throughput) です。これは、単位時間あたりに正常に送信できるデータの量を指します。 VOD (ビデオ オン デマンド) など、大量の連続読み取りと書き込みを行うアプリケーションの場合、スループット インジケーターにさらに注意が払われます。 IOPS は次の指標に分類できます: 合計 IOPS、読み取り/書き込みとシーケンシャル ランダム I/O 負荷が混在した場合のディスク IOPS、
これは実際の I/O 状況と最も一致しており、ほとんどのアプリケーションはこの指標に重点を置いています。 。
ランダム読み取り IOPS、100% ランダム読み取り負荷時の IOPS。
ランダム書き込み IOPS、100% ランダム書き込み負荷時の IOPS。
シーケンシャル読み取り IOPS、100% シーケンシャル読み取り負荷時の IOPS。
シーケンシャル書き込み IOPS、100% シーケンシャル書き込み負荷時の IOPS。
IOPS テスト ベンチマーク ツールには主に Iometer、IoZone、FIO などが含まれており、さまざまな状況下でディスクの IOPS をテストするために包括的に使用できます。アプリケーション システムの場合、最初にデータの負荷特性を決定し、次に測定と比較分析のために合理的な IOPS 指標を選択し、それに応じて適切なストレージ メディアとソフトウェア システムを選択する必要があります。

理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200

3. mysqlslap

3.1 ストレス テスト

mysqlslap は、負荷パフォーマンス テストとストレス テストのために MySQL に付属するツールです。データベースに負荷をかける複数のクライアントをシミュレートし、データベースのパフォーマンスを理解するためのレポートを生成できます。
mysqlslap の実行プロセスは主に 3 つのステップに分かれています。
① ライブラリとテーブルを作成し、テスト用のデータをインポートします。このプロセスは単一のスレッドによって実行されます。
② ストレステストを開始します。このステップは複数のスレッドを使用して実行できます。
③ テストデータをクリーンアップします。このプロセスは単一のスレッドによって実行されます。

[root@jeames ~]# mysqlslap --help

MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

3.2 ケース

mysqlslap -uroot -proot -h292.168.1.54 -P3306 \
--create-schema=mysqlslap --auto-generate-sql \
--auto-generate-sql-load-type=mixed \
--concurrency=100,200 --number-of-queries=1000 \
--iterations=10 --number-int-cols=7 \
--number-char-cols=13 --auto-generate-sql-add-autoincrement

Benchmark
#运行所有语句的平均时间,单位秒
Average number of seconds to run all queries: 0.018 seconds
#运行所有语句的最小秒数
Minimum number of seconds to run all queries: 0.018 seconds
#运行所有语句的最大秒数
Maximum number of seconds to run all queries: 0.018 seconds
#客户端数量
Number of clients running queries: 1
#每个客户端运行查询的平均数
Average number of queries per client: 0

该语句表示测试并发为 100 和 200 的情况,进行 1000 次访问(该值一般这样预估出来:并发客户数×每客户查询次数)。这样的测试方法迭代 10 次,最终显示最大、
最小、平均值
其中:--debug-info,代表要额外输出 CPU 以及内存的相关信息。如果报错 Option 'debug-info' used, but is disabled 请取消 debug-info 参数
-number-int-cols=7 表示生成的表中必须有 7 个 int 类型的列
-number-char-cols=13 表示生成的表中必须有 13 个 char 类型的列
-concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是 10、50、100 个并发。
--engines 代表要测试的引擎,可以有多个,用分隔符隔开。
--iterations 代表要运行这些测试多少次。
--auto-generate-sql 代表用系统自己生成的 SQL 脚本来测试。
--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。
--debug-info 代表要额外输出 CPU 以及内存的相关信息。
--number-int-cols :创建测试表的 int 型字段数量
--auto-generate-sql-add-autoincrement : 代表对生成的表自动添加 auto_increment 列,从 5.1.18 版本开始
--number-char-cols 创建测试表的 char 型字段数量。
--create-schema 测试的 schema,MySQL 中 schema 也就是 database。
--query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者 sql 语句来执行测试。
--only-print 查看语句做了什么。

MySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析

以上がMySQL パフォーマンス インジケーター TPS+QPS+IOPS ストレス テストの例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。