首頁  >  文章  >  資料庫  >  Mysql儲存寫入速度快慢是怎麼形成的?

Mysql儲存寫入速度快慢是怎麼形成的?

零下一度
零下一度原創
2017-07-26 18:10:181366瀏覽
一、儲存結構分析

MySQL儲存結構圖:



#解析:

1、讀取操作:記憶體讀取- ->cache快取讀取-->磁碟物理讀取

讀取到的資料會依照上述順序往回送。

2、寫入操作:記憶體資料直接寫入cache快取(非常快)-->寫入disk

由上可知,MySQL之所以讀寫速度快,cache在其中起到了關鍵作用。

1、Cache快取特點:

1、速度快

2、掉電資料遺失

#3、容量有限

# 2.保護資料安全(防止意外掉電的資料遺失)應對措施:

在儲存中,增加BBU(電池備援單元,就是電池),在掉電後,可以把快取中的資料寫到磁碟中,保證資料不會遺失。

如果沒有提供BBU或BBU壞了,記憶體資料就不會寫入cache快取中,就會直接寫入disk中;相較於寫入內存,寫入磁碟的速度就大打折扣(萬倍之差)。同時,因為慢下來的「寫」佔了絕大部分「讀」的頻寬。所以BBU問題是讀寫效能差的一很大的影響因素。

3、cache快取容量有限

(4G、8G、16G、32G),系統為了保持cache有用,會週期性的將cache快取的資料寫入磁碟中,避免cache被佔滿。

二、儲存寫入速度慢分析

資料庫-->寫入速度慢-->系統hang住
Q:如何判斷寫入速度慢?

A:

1、懷疑BBU問題

監控BBU的bug,解決:重啟BBU

2、cache被佔滿(類別同於BBU壞了的情況)

1、海量的寫入數據佔滿cache緩存,判斷:

shell> iostat -x

mysql> show global status like 'handler_write ';

2、cache寫入disk的速度慢了(排水速度遠小於注水速度)

硬碟I/O異常,負載過高:資料庫海量的物理讀(異常SQL ),判斷:

mysql> show status like 'Innodb_buffer_pool_reads';

3、儲存效能差問題

1、儲存裝置差,更新裝置

#3、儲存效能差問題

1、儲存裝置差,更新裝置

#2、災備同步風險,「再好的工程師,敵不過藍翔的挖土機、移工的鋤頭…」

三、關於BBU

英文簡稱:BBU

中文全名:Battery Backup Unit

中文全名:電池備援單元,是電池

1、作用:

掉電後,把快取中的資料寫到硬碟中,保證資料不會遺失;

是為了意外掉電刷髒資料的一種保護措施;

能夠在系統外部供電失效的情況下,提供後備電源支持,以確保儲存陣列中業務資料的安全性。

2、許多儲存裝置都會配備BBU

BBU在電源供應出現問題的時候,為RAID控制器快取提供電源。當電源斷電時,BBU電力可以使控制器內快取中的資料可以保存一定時間(根據BBU的型號而決定)。使用者只需要在BBU電力耗盡(電池有限)之前恢復正常供電,快取中的資料即可被完整的寫回RAID中,避免斷電導致資料遺失。

和伺服器電池有點不一樣,伺服器中,在配置RAID卡的時候可以配一個電池,在系統掉電後,能維持內存中的資料不丟失,但時間有限,大約12個小時左右,假如是12小時,如果在12內沒有恢復,內存中的資料就會丟失;
###3、超級電容#######伺服器還有一種保護方式,叫超級電容,也是和RAID卡配套的,他能在伺服器掉電後把快取中的資料寫入到電容中,而且會永久保存,類似寫入硬碟,實際上是寫入電容,你就理解成寫入U盤把。他比電池好,即使伺服器在12小時後沒有恢復電源,也不會造成資料遺失。 ###

以上是Mysql儲存寫入速度快慢是怎麼形成的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn