MySQL性能指標(biāo)TPS+QPS+IOPS壓測
前言
今天主要介紹MySQL數(shù)據(jù)庫,或者說所有數(shù)據(jù)庫的三個(gè)關(guān)鍵性能指標(biāo)TPS\QPS\IOPS
1. 性能指標(biāo)概覽
QPS(Queries Per Second)就是每秒的查詢數(shù),對(duì)數(shù)據(jù)庫而言就是數(shù)據(jù)庫每秒執(zhí)行的 SQL 數(shù)(含 insert、select、update、delete 等)。
TPS(Transactions Per Second)就是每秒的事務(wù)數(shù)。TPS 對(duì)于數(shù)據(jù)庫而言就是數(shù)據(jù)庫每秒執(zhí)行的事務(wù)數(shù),以 commit 成功次數(shù)為準(zhǔn)。
IOPS 每秒磁盤進(jìn)行的I/O操作次數(shù)
2. 指標(biāo)計(jì)算方式
2.1 TPS
適用innodb Transactions Per Second(每秒傳輸?shù)氖挛锾幚韨€(gè)數(shù)),即服務(wù)器每秒處理的事務(wù)數(shù)
一般的,評(píng)價(jià)系統(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
2.2 QPS
同時(shí)適用與InnoDB和MyISAM 引擎 每秒查詢率QPS是對(duì)一個(gè)特定的查詢服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn) 對(duì)應(yīng)fetches/sec,即每秒的響應(yīng)請(qǐng)求數(shù),也即是最大吞吐能力
2.3 IOPS
IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數(shù)),是衡量磁盤性能的主要指標(biāo)之一。IOPS是指單位時(shí)間內(nèi)系統(tǒng)能處理的I/O請(qǐng)求數(shù)量,一般以每秒處理的I/O請(qǐng)求數(shù)量為單位,I/O請(qǐng)求通常為讀或?qū)憯?shù)據(jù)操作請(qǐng)求。隨機(jī)讀寫頻繁的應(yīng)用,如OLTP(Online Transaction Processing),IOPS是關(guān)鍵衡量指標(biāo)。另一個(gè)重要指標(biāo)是數(shù)據(jù)吞吐量(Throughput),指單位時(shí)間內(nèi)可以成功傳輸?shù)臄?shù)據(jù)數(shù)量。對(duì)于大量順序讀寫的應(yīng)用,如VOD(Video On Demand),則更關(guān)注吞吐量指標(biāo)。 IOPS可細(xì)分為如下幾個(gè)指標(biāo): Toatal IOPS,混合讀寫和順序隨機(jī)I/O負(fù)載情況下的磁盤IOPS,
這個(gè)與實(shí)際I/O情況最為相符,大多數(shù)應(yīng)用關(guān)注此指標(biāo)。
Random Read IOPS,100%隨機(jī)讀負(fù)載情況下的IOPS。
Random Write IOPS,100%隨機(jī)寫負(fù)載情況下的IOPS。
Sequential Read IOPS,100%順序負(fù)載讀情況下的IOPS。
Sequential Write IOPS,100%順序?qū)懾?fù)載情況下的IOPS。
IOPS的測試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用于測試磁盤在不同情形下的IOPS。對(duì)于應(yīng)用系統(tǒng),需要首先確定數(shù)據(jù)的負(fù)載特征,然后選擇合理的IOPS指標(biāo)進(jìn)行測量和對(duì)比分析,據(jù)此選擇合適的存儲(chǔ)介質(zhì)和軟件系統(tǒng)。
理論上可以計(jì)算出磁盤的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略數(shù)據(jù)傳輸時(shí)間。假設(shè)磁盤平均物理尋道時(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 自帶的一個(gè)用于實(shí)現(xiàn)負(fù)載性能測試和壓力測試的工具。它可以模擬多個(gè)客戶端對(duì)數(shù)據(jù)庫進(jìn)行施壓,并生成報(bào)告來了解數(shù)據(jù)庫的性能狀況。
mysqlslap 的運(yùn)行過程主要分三步:
① 創(chuàng)建庫、表,導(dǎo)入數(shù)據(jù)用于測試。此過程由單線程完成。
② 開始進(jìn)行壓力測試。該步驟可以使用多線程完成。
③ 清理測試數(shù)據(jù)。此過程由單線程完成。
[root@jeames ~]# mysqlslap --help
3.2 案例
mysqlslap -uroot -proot -h192.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 #運(yùn)行所有語句的平均時(shí)間,單位秒 Average number of seconds to run all queries: 0.018 seconds #運(yùn)行所有語句的最小秒數(shù) Minimum number of seconds to run all queries: 0.018 seconds #運(yùn)行所有語句的最大秒數(shù) Maximum number of seconds to run all queries: 0.018 seconds #客戶端數(shù)量 Number of clients running queries: 1 #每個(gè)客戶端運(yùn)行查詢的平均數(shù) Average number of queries per client: 0 該語句表示測試并發(fā)為 100 和 200 的情況,進(jìn)行 1000 次訪問(該值一般這樣預(yù)估出來:并發(fā)客戶數(shù)×每客戶查詢次數(shù))。這樣的測試方法迭代 10 次,最終顯示最大、 最小、平均值 其中:--debug-info,代表要額外輸出 CPU 以及內(nèi)存的相關(guān)信息。如果報(bào)錯(cuò) Option 'debug-info' used, but is disabled 請(qǐng)取消 debug-info 參數(shù) -number-int-cols=7 表示生成的表中必須有 7 個(gè) int 類型的列 -number-char-cols=13 表示生成的表中必須有 13 個(gè) char 類型的列 -concurrency 代表并發(fā)數(shù)量,多個(gè)可以用逗號(hào)隔開,concurrency=10,50,100, 并發(fā)連接線程數(shù)分別是 10、50、100 個(gè)并發(fā)。 --engines 代表要測試的引擎,可以有多個(gè),用分隔符隔開。 --iterations 代表要運(yùn)行這些測試多少次。 --auto-generate-sql 代表用系統(tǒng)自己生成的 SQL 腳本來測試。 --auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed) --number-of-queries 代表總共要運(yùn)行多少次查詢。每個(gè)客戶運(yùn)行的查詢數(shù)量可以用查詢總數(shù)/并發(fā)數(shù)來計(jì)算。 --debug-info 代表要額外輸出 CPU 以及內(nèi)存的相關(guān)信息。 --number-int-cols :創(chuàng)建測試表的 int 型字段數(shù)量 --auto-generate-sql-add-autoincrement : 代表對(duì)生成的表自動(dòng)添加 auto_increment 列,從 5.1.18 版本開始 --number-char-cols 創(chuàng)建測試表的 char 型字段數(shù)量。 --create-schema 測試的 schema,MySQL 中 schema 也就是 database。 --query 使用自定義腳本執(zhí)行測試,例如可以調(diào)用自定義的一個(gè)存儲(chǔ)過程或者 sql 語句來執(zhí)行測試。 --only-print 查看語句做了什么。
到此這篇關(guān)于MySQL性能指標(biāo)TPS+QPS+IOPS壓測的文章就介紹到這了,更多相關(guān)MySQL性能指標(biāo)壓測內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL下載安裝、配置與使用教程詳細(xì)版(win7x64)
這篇文章主要為大家詳細(xì)介紹了MySQL下載安裝、配置與使用的具體操作教程,很詳細(xì),感興趣的小伙伴們可以參考一下2016-05-05mysql8.0.14.zip安裝時(shí)自動(dòng)創(chuàng)建data文件夾失敗服務(wù)無法啟動(dòng)
這篇文章主要介紹了mysql8.0.14.zip安裝時(shí)自動(dòng)創(chuàng)建data文件夾失敗,導(dǎo)致服務(wù)無法啟動(dòng)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02Navicat for MySQL 15注冊(cè)激活詳細(xì)教程
這篇文章主要介紹了Navicat for MySQL 15注冊(cè)激活詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12MySQL 刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)方法小結(jié)
在實(shí)際項(xiàng)目中,我們經(jīng)常會(huì)遇到刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的問題,貌似是很簡單的問題哈,下面我們來探討下2014-07-07