首頁  >  文章  >  資料庫  >  MySQL效能指標TPS+QPS+IOPS壓測實例分析

MySQL效能指標TPS+QPS+IOPS壓測實例分析

PHPz
PHPz轉載
2023-05-26 18:41:222310瀏覽

1. 效能指標概覽

QPS(Queries Per Second)就是每秒的查詢數,對資料庫而言就是資料庫每秒執行的SQL 數(含insert、select、update、 delete 等)。
TPS(Transactions Per Second)就是每秒的交易數。 TPS 對資料庫而言就是資料庫每秒執行的交易數,以 commit 成功次數為準。
IOPS 每秒磁碟進行的I/O操作次數

2. 指標計算方式

2.1 TPS

適用innodb Transactions Per Second (每秒傳輸的事物處理個數),即伺服器每秒處理的事務數
一般的,評價系統效能均以每秒鐘完成的技術交易的數量來衡量。系統整體處理能力取決於處理能力最低模組的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 引擎每秒查詢率QPS是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準對應fetches/sec,即每秒的回應請求數,也即是最大吞吐能力

MySQL效能指標TPS+QPS+IOPS壓測實例分析

2.3 IOPS

IOPS (Input/Output Per Second)即每秒輸入的輸出量(或讀取寫入次數),是衡量磁碟效能的主要指標之一。 IOPS是指單位時間內系統能處理的I/O請求數量,一般以每秒處理的I/O請求數量為單位,I/O請求通常為讀取或寫入資料操作請求。隨機讀寫頻繁的應用,如OLTP(Online Transaction Processing),IOPS是關鍵衡量指標。另一個重要指標是資料吞吐量(Throughput),指單位時間內可以成功傳輸的資料數量。對於大量順序讀寫的應用,如VOD(Video On Demand),則較關注吞吐量指標。 IOPS可細分為以下幾個指標: Toatal IOPS,混合讀寫和順序隨機I/O負載情況下的磁碟IOPS,
這個與實際I/O情況最為相符,大多數應用關注此指標。
Random Read IOPS,100%隨機讀取負載情況下的IOPS。
Random Write IOPS,100%隨機寫入負載情況下的IOPS。
Sequential Read IOPS,100%順序負載讀取情況下的IOPS。
Sequential Write IOPS,100%順序寫入負載情況下的IOPS。
IOPS的測試benchmark工具主要有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 的運行過程主要分三步驟:
① 建立庫、表,匯入資料用於測試。此過程由單線程完成。
② 開始進行壓力測試。該步驟可以使用多執行緒完成。
③ 清理測試資料。此過程由單線程完成。

[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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除