MySQL儲存寫入速度慢分析

2022-03-31 19:41:15 字數 3857 閱讀 7496

問題背景描述:

在mysql中執行sql語句,比如insert,賊慢,明明可能也就只是一行資料的插入,資料量很小,但是耗費的時間卻很多,為什麼?

一、儲存結構分析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、儲存裝置差,更新裝置

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

三、關於bbu

英文簡稱:bbu

英文全稱:battery backup unit

中文全稱:電池備份單元,是電池

1、作用:

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

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

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

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

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

和伺服器電池有點不一樣,伺服器中,在配置raid卡的時候可以配乙個電池,在系統掉電後,能維持記憶體中的資料不丟失,但時間有限,大約12個小時左右,假如是12小時,如果在12內沒有恢復,記憶體中的資料就會丟失;

3、超級電容

伺服器還有一種保護方式,叫超級電容,也是和raid卡配套的,他能在伺服器掉電後把快取中的資料寫入到電容中,而且會永久儲存,類似寫入硬碟,實際上是寫入電容,你就理解成寫入u盤把。他比電池好,即使伺服器在12個小時後沒有恢復電源,也不會造成資料丟失。

@author:

問題背景描述:

在mysql中執行sql語句,比如insert,賊慢,明明可能也就只是一行資料的插入,資料量很小,但是耗費的時間卻很多,為什麼?

一、儲存結構分析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、儲存裝置差,更新裝置

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

三、關於bbu

英文簡稱:bbu

英文全稱:battery backup unit

中文全稱:電池備份單元,是電池

1、作用:

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

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

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

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

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

和伺服器電池有點不一樣,伺服器中,在配置raid卡的時候可以配乙個電池,在系統掉電後,能維持記憶體中的資料不丟失,但時間有限,大約12個小時左右,假如是12小時,如果在12內沒有恢復,記憶體中的資料就會丟失;

3、超級電容

伺服器還有一種保護方式,叫超級電容,也是和raid卡配套的,他能在伺服器掉電後把快取中的資料寫入到電容中,而且會永久儲存,類似寫入硬碟,實際上是寫入電容,你就理解成寫入u盤把。他比電池好,即使伺服器在12個小時後沒有恢復電源,也不會造成資料丟失。

MySQL 查詢速度慢

2016年09月30日 14 31 44 以下是基於我結合b 樹的資料結構和對實驗結果的推測作出的判斷,如有錯誤,懇請指正!今天實驗了一下mysql的count 操作優化,以下討論基於mysql5.7 innodb儲存引擎.x86 windows作業系統。建立的表的結構如下 資料量為100萬 首先是...

FTP的速度慢

最近發現在在家裡上傳到ftp的速度很不正常,小檔案上傳簡直就是悲劇,一上傳速度就變成0,測試了大檔案一開始速度正常然後開始變慢,速度到0,過幾秒鐘後速度才恢復。一開始以為是ftp伺服器故障,檢查了很多設定,包括重新編譯依然無效。但是發現在單位正常。之後查閱了很多相關資料,發現居然和mtu值有關,預設...

解決pip install 速度慢

新版ubuntu要求使用https源,要注意。清華 阿里雲 中國科技大學 華中理工大學 山東理工大學 豆瓣 可以在使用pip的時候加引數 i 例如 pip install i pyspider,這樣就會從清華這邊的映象去安裝pyspider庫。linux下,在home目錄下建立一下.pip文字夾 命...