mysql5.6 redo日誌與刷髒

來源:互聯網
上載者:User

標籤:

1.redo日誌

為了在伺服器崩潰時保證資料安全並提升系統效能,innodb儲存引擎首先會將提交的事物內容記錄到redo日誌,而對實際資料檔案修改則放在以後,批處理方式刷盤。redo日誌像邏輯的儲存場所,它迴圈使用多個檔案。(ib_logfile0、ib_logfile1、ib_logfile2)

innodb_log_file_size     #各記錄檔大小

innodb_log_files_in_group     #記錄檔的個數,innodb最終可用的日誌大小為innodb_log_file_size *innodb_log_files_in_group

 innodb_log_group_home_dir    #日誌目錄

redo日誌空間越大,innodb緩衝池中就可以停留更多的“髒頁”。這樣,innodb緩衝池的髒頁就可以更大批量的新式重新整理到磁碟。由於mysql5.5redo日誌可用空間最大為4GB,所以在擁有大容量緩衝的innodb中,工作效率並不高。mysql5.6開始允許使用者佈建4GB以上redo日誌,innodb_log_file_size *innodb_log_files_in_group組合最大可以為512GB.這樣,當在擁有大量緩衝空間時髒頁可以更有效發揮寫緩衝作用。

2.刷髒

在innodb中處理使用者查詢後,其結果在記憶體空間的緩衝池已經發生變化,但是還未記錄到磁碟。這種頁面稱為髒頁,將髒頁記錄到磁碟的過程稱為刷髒。刷髒分兩種演算法:flush-list(依據時間管理緩衝池中更改頁面的列表)LRU-list(用於管理緩衝池中非常用頁面的列表)

(1)flush-list根據RDBMSredo日誌的工作方式(write Ahead Log),在redo日誌與髒頁中,redo日誌總要首先被完全刷到磁碟時,才能再次使用與該髒頁相關的redo日誌槽。此時為了在緩衝池中快速尋找髒頁,會根據髒頁的修改時間順序維護一個鏈表,該鏈表稱為flush-list。

(2)假如innodb的緩衝池全部由資料頁和索引填滿,innodb緩衝池沒有空閑空間。此情形下,一個新查詢到來,這時為了執行該查詢,innodb儲存引擎必須從緩衝池中刪除幾個已經載入的頁面,innodb不會隨意刪除,innodb管理著LRU-list鏈表,需要刪除時會從該鏈表選擇。LRU-list維護著最近不常用的頁面列表。LRU-list分為兩個地區,MRU和LRU。MRU位於LRU-list的5/8之前,其餘部分為LRU。也就是5/8之前儲存著常用的頁面,其餘3/8為不常用頁面(可以修改innodb_old_blocks_pct系統變數值控制MRU與LRU之間的分割點,預設值為5/8)。刪除內容會在最不常用鏈表的末端刪除幾個頁面。刪除之前會進行刷髒。

mysql5.6 redo日誌與刷髒

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.