MySQL數(shù)據(jù)庫(kù)三個(gè)關(guān)鍵性能指標(biāo)--TPSQPSIOPS,如果你想要學(xué)習(xí)數(shù)據(jù)庫(kù)技術(shù),還請(qǐng)先了解這些知識(shí)點(diǎn),讓你學(xué)習(xí)數(shù)據(jù)庫(kù)的路上不寂寞。
今天主要介紹MySQL數(shù)據(jù)庫(kù),或者說(shuō)所有數(shù)據(jù)庫(kù)的三個(gè)關(guān)鍵性能指標(biāo):
qps 每秒處理的查詢(xún)數(shù)
tps 每秒處理的事務(wù)數(shù)
IOPS 每秒磁盤(pán)進(jìn)行的I/O操作次數(shù)
一、TPS(適用innodb)
1. 概念
Transactions Per Second(每秒傳輸?shù)氖挛锾幚韨€(gè)數(shù)),即服務(wù)器每秒處理的事務(wù)數(shù)。
TPS包括一條消息入和一條消息出,加上一次用戶(hù)數(shù)據(jù)庫(kù)訪問(wèn)。(業(yè)務(wù)TPS = CAPS × 每個(gè)唿叫平均TPS)
TPS是軟件測(cè)試結(jié)果的測(cè)量單位。一個(gè)事務(wù)是指一個(gè)客戶(hù)機(jī)向服務(wù)器發(fā)送請(qǐng)求然后服務(wù)器做出反應(yīng)的過(guò)程??蛻?hù)機(jī)在發(fā)送請(qǐng)求時(shí)開(kāi)始計(jì)時(shí),收到服務(wù)器響應(yīng)后結(jié)束計(jì)時(shí),以此來(lái)計(jì)算使用的時(shí)間和完成的事務(wù)個(gè)數(shù)。
一般的,評(píng)價(jià)系統(tǒng)性能均以每秒鐘完成的技術(shù)交易的數(shù)量來(lái)衡量。系統(tǒng)整體處理能力取決于處理能力最低模塊的TPS值。
2. TPS計(jì)算
(1) 方法一
Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit';
Com_rollback = SHOW GLOBAL STATUS LIKE 'Com_rollback';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
TPS=(Com_commit + Com_rollback)/Uptime
(2) 方法二
use information_schema;
select VARIABLE_VALUE into @num_com from GLOBAL_STATUS where VARIABLE_NAME ='COM_COMMIT';
select VARIABLE_VALUE into @num_roll from GLOBAL_STATUS where VARIABLE_NAME ='COM_ROLLBACK';
select VARIABLE_VALUE into @uptime from GLOBAL_STATUS where VARIABLE_NAME ='UPTIME';
select (@num_com+@num_roll)/@uptime;
二、QPS(同時(shí)適用與InnoDB和MyISAM 引擎 )
1. 概念
每秒查詢(xún)率QPS是對(duì)一個(gè)特定的查詢(xún)服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn),在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)器的機(jī)器的性能經(jīng)常用每秒查詢(xún)率來(lái)衡量。
對(duì)應(yīng)fetches/sec,即每秒的響應(yīng)請(qǐng)求數(shù),也即是最大吞吐能力。
2. QPS計(jì)算
(1) 方法一
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
QPS=Questions/Uptime
(2) 方法二
use information_schema;
select VARIABLE_VALUE into @num_queries from GLOBAL_STATUS where VARIABLE_NAME ='QUESTIONS';
select VARIABLE_VALUE into @uptime from GLOBAL_STATUS where VARIABLE_NAME ='UPTIME';
select @num_queries/@uptime;
三、IOPS
1. 概念
IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫(xiě)次數(shù)),是衡量磁盤(pán)性能的主要指標(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ī)讀寫(xiě)頻繁的應(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ì)于大量順序讀寫(xiě)的應(yīng)用,如VOD(Video On Demand),則更關(guān)注吞吐量指標(biāo)。
傳統(tǒng)磁盤(pán)本質(zhì)上一種機(jī)械裝置,如FC,SAS,SATA磁盤(pán),轉(zhuǎn)速通常為5400/7200/10K/15K rpm不等。影響磁盤(pán)的關(guān)鍵因素是磁盤(pán)服務(wù)時(shí)間,即磁盤(pán)完成一個(gè)I/O請(qǐng)求所花費(fèi)的時(shí)間,它由尋道時(shí)間、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時(shí)間三部分構(gòu)成。
尋道時(shí)間Tseek是指將讀寫(xiě)磁頭移動(dòng)至正確的磁道上所需要的時(shí)間。尋道時(shí)間越短,I/O操作越快,目前磁盤(pán)的平均尋道時(shí)間一般在3-15ms。
旋轉(zhuǎn)延遲Trotation是指盤(pán)片旋轉(zhuǎn)將請(qǐng)求數(shù)據(jù)所在扇區(qū)移至讀寫(xiě)磁頭下方所需要的時(shí)間。旋轉(zhuǎn)延遲取決于磁盤(pán)轉(zhuǎn)速,通常使用磁盤(pán)旋轉(zhuǎn)一周所需時(shí)間的1/2表示。比如,7200 rpm的磁盤(pán)平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms,而轉(zhuǎn)速為15000 rpm的磁盤(pán)其平均旋轉(zhuǎn)延遲約為2ms。
數(shù)據(jù)傳輸時(shí)間Ttransfer是指完成傳輸所請(qǐng)求的數(shù)據(jù)所需要的時(shí)間,它取決于數(shù)據(jù)傳輸率,其值等于數(shù)據(jù)大小除以數(shù)據(jù)傳輸率。目前IDE/ATA能達(dá)到133MB/s,SATA II可達(dá)到300MB/s的接口數(shù)據(jù)傳輸率,數(shù)據(jù)傳輸時(shí)間通常遠(yuǎn)小于前兩部分時(shí)間。
IOPS可細(xì)分為如下幾個(gè)指標(biāo):
Toatal IOPS,混合讀寫(xiě)和順序隨機(jī)I/O負(fù)載情況下的磁盤(pán)IOPS,這個(gè)與實(shí)際I/O情況最為相符,大多數(shù)應(yīng)用關(guān)注此指標(biāo)。
Random Read IOPS,100%隨機(jī)讀負(fù)載情況下的IOPS。
Random Write IOPS,100%隨機(jī)寫(xiě)負(fù)載情況下的IOPS。
Sequential Read IOPS,100%順序負(fù)載讀情況下的IOPS。
Sequential Write IOPS,100%順序?qū)懾?fù)載情況下的IOPS。
IOPS的測(cè)試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用于測(cè)試磁盤(pán)在不同情形下的IOPS。對(duì)于應(yīng)用系統(tǒng),需要首先確定數(shù)據(jù)的負(fù)載特征,然后選擇合理的IOPS指標(biāo)進(jìn)行測(cè)量和對(duì)比分析,據(jù)此選擇合適的存儲(chǔ)介質(zhì)和軟件系統(tǒng)。
2. IOPS計(jì)算
理論上可以計(jì)算出磁盤(pán)的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略數(shù)據(jù)傳輸時(shí)間。假設(shè)磁盤(pán)平均物理尋道時(shí)間為3ms, 磁盤(pán)轉(zhuǎn)速為7200,10K,15K rpm,則磁盤(pán)IOPS理論最大值分別為,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
3. 案例
需求:20TB存儲(chǔ)空間同時(shí)滿(mǎn)足4500 IOPS+RAID 5,我應(yīng)該如何計(jì)算?RAID 5或者RAID 1/0的時(shí)候分別需要多少塊硬盤(pán)?
首先需要知道I/O中讀操作(Read)與寫(xiě)操作(Write)所占的百分比。然后通過(guò)下列公式,將主機(jī)的IOPS需求轉(zhuǎn)換成硬盤(pán)實(shí)際IOPS負(fù)載:
假定4500 IOPS中讀/寫(xiě)比是2:1,則不同RAID類(lèi)型Drive IOPS要求分別如下:
RAID 1/0: (2/3)*4500 + 2*(1/3)*4500 = 6000 IOPS
RAID 5: (2/3)*4500 + 4*(1/3)*4500 = 9000 IOPS
RAID 6: (2/3)*4500 + 6*(1/3)*4500 = 12000 IOPS
再參照下表中不同類(lèi)型硬盤(pán)單塊IOPS參數(shù),得出需要多少塊硬盤(pán):
假定選用FC 15K RPM硬盤(pán),則:
RAID 1/0: 6000/180 = 34 塊
RAID 5: 9000/180 = 50 塊
RAID 6: 12000/180 = 67 塊
注:實(shí)際情況下還需考慮Vault Drivers (共5塊)以及Hot Spares (建議每30塊硬盤(pán)一個(gè))。
最后,如果選用600GB FC硬盤(pán)來(lái)實(shí)現(xiàn)20TB可用空間,則RAID 1/0需要78塊,RAID 5需要42塊。
以上就是長(zhǎng)沙一度軟件培訓(xùn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java編程學(xué)習(xí):MySQL數(shù)據(jù)庫(kù)的學(xué)習(xí)路線”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
Java全套自學(xué)資料
Java自學(xué)視頻教程(免費(fèi)學(xué)習(xí)):http://www.bjpowernode.com/video.html
Java技術(shù)教程:http://www.bjpowernode.com/tutorial/
相關(guān)文章
零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖
你還在糾結(jié)學(xué)Java,是自學(xué)還是去培訓(xùn)班嗎
一個(gè)標(biāo)準(zhǔn)的Java程序員如何進(jìn)階?
Java學(xué)習(xí)路線清單,快速進(jìn)階Java
Java編程初學(xué)者要如何進(jìn)階