溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2022-08-04 10:31:09 來源:億速云 閱讀:206 作者:iii 欄目:開發(fā)技術(shù)

這篇“MySQL性能指標TPS+QPS+IOPS壓測實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MySQL性能指標TPS+QPS+IOPS壓測實例分析”文章吧。

1. 性能指標概覽

QPS(Queries Per Second)就是每秒的查詢數(shù),對數(shù)據(jù)庫而言就是數(shù)據(jù)庫每秒執(zhí)行的 SQL 數(shù)(含 insert、select、update、delete 等)。
TPS(Transactions Per Second)就是每秒的事務數(shù)。TPS 對于數(shù)據(jù)庫而言就是數(shù)據(jù)庫每秒執(zhí)行的事務數(shù),以 commit 成功次數(shù)為準。
IOPS 每秒磁盤進行的I/O操作次數(shù)

2. 指標計算方式

2.1 TPS

適用innodb Transactions Per Second(每秒傳輸?shù)氖挛锾幚韨€數(shù)),即服務器每秒處理的事務數(shù)
一般的,評價系統(tǒng)性能均以每秒鐘完成的技術(shù)交易的數(shù)量來衡量。系統(tǒng)整體處理能力取決于處理能力最低模塊的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是對一個特定的查詢服務器在規(guī)定時間內(nèi)所處理流量多少的衡量標準 對應fetches/sec,即每秒的響應請求數(shù),也即是最大吞吐能力

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

2.3 IOPS

IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數(shù)),是衡量磁盤性能的主要指標之一。IOPS是指單位時間內(nèi)系統(tǒng)能處理的I/O請求數(shù)量,一般以每秒處理的I/O請求數(shù)量為單位,I/O請求通常為讀或?qū)憯?shù)據(jù)操作請求。隨機讀寫頻繁的應用,如OLTP(Online Transaction Processing),IOPS是關(guān)鍵衡量指標。另一個重要指標是數(shù)據(jù)吞吐量(Throughput),指單位時間內(nèi)可以成功傳輸?shù)臄?shù)據(jù)數(shù)量。對于大量順序讀寫的應用,如VOD(Video On Demand),則更關(guān)注吞吐量指標。 IOPS可細分為如下幾個指標: Toatal IOPS,混合讀寫和順序隨機I/O負載情況下的磁盤IOPS,
這個與實際I/O情況最為相符,大多數(shù)應用關(guān)注此指標。
Random Read IOPS,100%隨機讀負載情況下的IOPS。
Random Write IOPS,100%隨機寫負載情況下的IOPS。
Sequential Read IOPS,100%順序負載讀情況下的IOPS。
Sequential Write IOPS,100%順序?qū)懾撦d情況下的IOPS。
IOPS的測試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用于測試磁盤在不同情形下的IOPS。對于應用系統(tǒng),需要首先確定數(shù)據(jù)的負載特征,然后選擇合理的IOPS指標進行測量和對比分析,據(jù)此選擇合適的存儲介質(zhì)和軟件系統(tǒng)。

理論上可以計算出磁盤的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略數(shù)據(jù)傳輸時間。假設(shè)磁盤平均物理尋道時間為3ms, 磁盤轉(zhuǎn)速為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 自帶的一個用于實現(xiàn)負載性能測試和壓力測試的工具。它可以模擬多個客戶端對數(shù)據(jù)庫進行施壓,并生成報告來了解數(shù)據(jù)庫的性能狀況。
mysqlslap 的運行過程主要分三步:
① 創(chuàng)建庫、表,導入數(shù)據(jù)用于測試。此過程由單線程完成。
② 開始進行壓力測試。該步驟可以使用多線程完成。
③ 清理測試數(shù)據(jù)。此過程由單線程完成。

[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
#運行所有語句的最小秒數(shù)
Minimum number of seconds to run all queries: 0.018 seconds
#運行所有語句的最大秒數(shù)
Maximum number of seconds to run all queries: 0.018 seconds
#客戶端數(shù)量
Number of clients running queries: 1
#每個客戶端運行查詢的平均數(shù)
Average number of queries per client: 0

該語句表示測試并發(fā)為 100 和 200 的情況,進行 1000 次訪問(該值一般這樣預估出來:并發(fā)客戶數(shù)×每客戶查詢次數(shù))。這樣的測試方法迭代 10 次,最終顯示最大、
最小、平均值
其中:--debug-info,代表要額外輸出 CPU 以及內(nèi)存的相關(guān)信息。如果報錯 Option 'debug-info' used, but is disabled 請取消 debug-info 參數(shù)
-number-int-cols=7 表示生成的表中必須有 7 個 int 類型的列
-number-char-cols=13 表示生成的表中必須有 13 個 char 類型的列
-concurrency 代表并發(fā)數(shù)量,多個可以用逗號隔開,concurrency=10,50,100, 并發(fā)連接線程數(shù)分別是 10、50、100 個并發(fā)。
--engines 代表要測試的引擎,可以有多個,用分隔符隔開。
--iterations 代表要運行這些測試多少次。
--auto-generate-sql 代表用系統(tǒng)自己生成的 SQL 腳本來測試。
--auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--number-of-queries 代表總共要運行多少次查詢。每個客戶運行的查詢數(shù)量可以用查詢總數(shù)/并發(fā)數(shù)來計算。
--debug-info 代表要額外輸出 CPU 以及內(nèi)存的相關(guān)信息。
--number-int-cols :創(chuàng)建測試表的 int 型字段數(shù)量
--auto-generate-sql-add-autoincrement : 代表對生成的表自動添加 auto_increment 列,從 5.1.18 版本開始
--number-char-cols 創(chuàng)建測試表的 char 型字段數(shù)量。
--create-schema 測試的 schema,MySQL 中 schema 也就是 database。
--query 使用自定義腳本執(zhí)行測試,例如可以調(diào)用自定義的一個存儲過程或者 sql 語句來執(zhí)行測試。
--only-print 查看語句做了什么。

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

以上就是關(guān)于“MySQL性能指標TPS+QPS+IOPS壓測實例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI