程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL Doublewrite Buffer及業務評估

MySQL Doublewrite Buffer及業務評估

編輯:MYSQL入門知識

1. 關於Doublewrite Buffe的總結

Doublewrite Buffer:Doublewrite Buffer出現的初衷是防止buffer pool中的髒頁刷新到磁盤中,出現部分寫的問題,innodb頁大小一般為16k,而Linux操作系統的block size一般為4k。這樣在刷新的過程中,如果OS發生crash或者停電,會導致16k的頁塊只有部分block刷新到磁盤中,而其它的沒有,這樣會導致數據不一致。Doublewrite Buffer放到系統表空間中,有100個頁的大小,當innodb將buffer pool中的頁刷新到磁盤中時,會首先copy到Doublewrite Buffer中,再刷新到磁盤中。如果在刷新磁盤的過程中出現問題,innodb會利用doublewrite buffer中存儲的頁來恢復數據。如果在刷新doublewrite buffer的過程中出現問題,則會利用物理磁盤上的原始頁和redo log來恢復數據。

Doublewrite Buffer的啟用會對MySQL的整體性能降低5-10%,可通過innodb_doublewrite參數進行設置,默認是開啟的。

Percona有個單獨的參數來設置Doublewrite Buffer的存放位置,innodb_doublewrite_file。

 

2. 根據以下內容,演算推導出機器相關的指標:

響應時間     查詢和操作請求ms級返回。

數據總量     1年內數據量大約500G數據量。

每秒請求量  每秒有3w次請求。

讀寫比        讀寫比是1:1。

重要程度     核心系統,P1級故障。

其他說明     數據記錄長度約為1KB,數據1周內數據操作頻繁

 

推導過程:

Step1:1年內數據大約500G

結果:每秒產生的數據量大約诶500*1024*1024/(365*24*60*60)=17KB/s

Step2: 每秒有3w次請求,讀寫比是1:1

結果:每秒讀請求為3w/2=1.5w/s,每秒寫請求為3w/2=1.5w/s

Step3: 記錄長度大約為1KB

結果:根據Step1得出的結果,每秒insert的速率為17次/s,根據Step2得到的每秒寫請求為1.5w/s,可知每秒14983次為delete和update操作。由於MySQL數據讀寫操作按照頁來處理,頁大小為16KB,假設每次操作的頁都不相同。那麼每秒寫操作數據量為:16KB*1.5w=234MB/s,每秒讀操作數據量為:16KB*1.5w=234MB/s

Step4:數據1周內數據操作頻繁

結果:熱數據量為:(500/365)*7=9.6G

Step5:操作ms級返回

操作ms級別返回,那麼需要盡可能的將熱數據加載到內存。按照內存命中率接近100%計算的話,那麼Innodb buffer大約為9.6GB,而其他內存需求大概為1~2GB,因此內存超配大約為12GB。按照超配原則,寫帶寬(wBPS)限制為300MB/s;讀帶寬(rBPS)限制為300MB/s。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved