您好,登錄后才能下訂單哦!
MySQL存儲寫入速度慢如何解決,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
一、存儲結構分析
MySQL 存儲結構圖:
解析:
1、讀操作:內存讀 -->cache 緩存讀 --> 磁盤物理讀
讀取到的數據會按上述順序往回送。
2、寫操作:內存數據直接寫入 cache 緩存 (非常快)--> 寫入 disk
由上可知,MySQL 之所以讀寫速度快,cache 在其中起到了關鍵作用。
①、Cache 緩存特點:
- 速度快
- 掉電數據丟失
- 容量有限
②、保護數據安全 (防止意外掉電的數據丟失) 應對措施:
在存儲中,增加 BBU(電池備份單元,就是電池),在掉電后,可以把緩存中的數據寫到磁盤中,保證數據不會丟失。
如果沒有提供 BBU 或者 BBU 壞了,內存數據就不會寫入 cache 緩存中,就會直接寫入 disk 中;相較于寫入內存,寫入磁盤的速度就大打折扣 (萬倍之差)。與此同時,因為慢下來的 “寫” 占了絕大部分 “讀” 的帶寬。所以 BBU 問題是讀寫性能差的一很大的影響因素。
③、cache 緩存容量有限
(4G、8G、16G、32G),系統為了保持 cache 有用,會周期性的將 cache 緩存的數據寫入磁盤中,避免 cache 被占滿。
二、存儲寫入速度慢分析
數據庫 --> 寫入速度慢 --> 系統 hang 住
Q:如何判斷寫入速度慢?
A:
1、懷疑 BBU 問題
監控 BBU 的 bug,解決:重啟 BBU
2、cache 被占滿 (類同于 BBU 壞了的情況)
①、海量的寫入數據占滿 cache 緩存,判斷:
shell> iostat -x
mysql> show global status like 'handler_write';
②、cache 寫入 disk 的速度慢了 (排水速度遠小于注水速度)
硬盤 I/O 異常,負載過高:數據庫海量的物理讀 (異常 SQL),判斷:
mysql> show status like 'Innodb_buffer_pool_reads';
3、存儲性能差問題
①、存儲設備差,更新設備
②、災備同步風險,“再好的工程師,敵不過藍翔的挖掘機、農民工的鋤頭……”
三、關于 BBU
英文簡稱:BBU
英文全稱:Battery Backup Unit
中文全稱:電池備份單元,是電池
1、作用:
在掉電后,把緩存中的數據寫到硬盤中,保證數據不會丟失;
是為了意外掉電刷臟數據的一種保護措施;
能夠在系統外部供電失效的情況下,提供后備電源支持,以保證存儲陣列中業務數據的安全性。
2、許多存儲設備都會配備 BBU
BBU 在電源供應出現問題的時候,為 RAID 控制器緩存提供電源。當電源斷電時,BBU 電力可以使控制器內緩存中的數據可以保存一定時間(根據 BBU 的型號而決定)。用戶只需要在 BBU 電力耗盡 (電池有限) 之前恢復正常供電,緩存中的數據即可被完整的寫回 RAID 中, 避免斷電導致數據丟失。
和服務器電池有點不一樣,服務器中,在配置 RAID 卡的時候可以配一個電池,在系統掉電后,能維持內存中的數據不丟失,但時間有限,大約 12 個小時左右,假如是 12 小時,如果在 12 內沒有恢復,內存中的數據就會丟失;
3、超級電容
服務器還有一種保護方式,叫超級電容,也是和 RAID 卡配套的,他能在服務器掉電后把緩存中的數據寫入到電容中,而且會***保存,類似寫入硬盤,實際上是寫入電容,你就理解成寫入 U 盤把。他比電池好,即使服務器在 12 個小時后沒有恢復電源,也不會造成數據丟失。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。