關於checkpoint你可能不知道的事

2021-10-23 16:09:48 字數 1859 閱讀 8915

我們都知道,當使用者修改了資料,資料頁在記憶體中修改後並不是每次都重新整理到磁碟上。checkpoint之前的資料頁保證一定落盤了,這也代表這這部分redolog可以被覆蓋了,checkpoint之後的之後的資料有可能落盤,也有可能沒有落盤,所以在進行崩潰恢復時,checkpoint之後的日誌還是需要被使用的。innodb會依據髒頁的重新整理情況,定期推進checkpoint,從而減少資料庫崩潰恢復的時間。

checkpoint的作用

關於redo log的生成情況分析

關於redo log生成情況可以通過show engine innodb status\g命令檢視。

---

log---

log sequence number 25778620828

log flushed up to   25778620828

pages flushed up to 25778620828

last checkpoint at  25778620819

0 pending log flushes, 0 pending chkp writes

16 log i/o's done, 0.00 log i/o's/second

1.log sequence number,表示資料庫開啟到現在已經產生的日誌量,即lsn,日誌序列號,單位是位元組,值越大,說明資料庫更新越多。通過它可以計算日誌的產生速度。

2.log flushed up to,表示日誌已經重新整理到哪個點了,它的值》=lsn。

lsn - log flushed up to表示log buffer中還有多少日誌未重新整理到磁碟。如果系統hang住了,可以通過lsn - log flushed up to來看下是否是由於log buffer滿了導致系統hang住了。一般情況下,如果超過30%的日誌還沒有重新整理到日誌檔案中,就需要增大innodb_log_buffer_size的值。

3.pages flushed up to,表示髒頁已經刷到哪個點了,表示這之前的logfile裡的日誌可以被覆蓋了。

2-3表示不可覆蓋的髒頁的量,如果它的值較小,說明log flushed up to和pages flushed up to的值比較接近,表示髒頁刷的比較快,可以被覆蓋的logfile就多。如果2-3的值大,表示髒頁重新整理的速度慢,能被覆蓋的logfile就少。

4.last checkpoint at,表示最後一次檢查點的log位置。它的值表示系統啟動時從哪個點去恢復,redo log做崩潰恢復時指定的起點。去做崩潰恢復時,終點是最新的一條logfile,起點就是checkpoint,記錄的最早髒的點。

3-4表示checkpoint這個動作的跟進速度。值大表示需要提高checkpoint的跟進速度。

2-4表示崩潰後日誌要恢復的量。

checkpoint的工作機制

checkpoint有兩種方式,sharp checkpointfuzzy checkpoint

1.sharp checkpoint:完全檢查點,資料庫正常關閉時,會觸發把所有的髒頁都寫入到磁碟上,這就是完全檢查點,資料庫正常執行過程中不會使用sharp checkpoint。

2.fuzzy checkpoint:模糊檢查點,主要有以下四種情況:

小結mysql資料庫為了提高事務的操作效率,在事務提交之後並不會立即將修改後的資料寫入磁碟,而是通過日誌先行(write log ahead)的策略保證事務的永續性。對於髒頁,則通過非同步的方式重新整理到磁碟上,mysql則是採用了checkpoint技術實現了非同步重新整理髒頁的目的。

關於Pixelmator Pro,你可能還不知道!

什麼是pixelmator pro for mac?pixelmator pro 基本上擁有你對 mac 影象處理器所期望的所有工具,比如智慧型選擇工具 修整工具 繪畫工具 各種顏色調整效果等等。簡潔的 gui 配合 macos 的外觀,其風格和功能與蘋果官方的產品十分接近。其在 mac 端是 ad...

關於Unity動畫系統優化,你可能遇到這些問題

記憶體洩漏 資源製作 q1 我們測試發現,當animator controller掛載的動作比較多時,即使切換成另外乙個動作很少的animator controller,任務的動作資訊還是不會釋放。我們將英雄打成乙個assetbundle,然後又把定製的runtime animator contro...

關於xargs,你可能不知道的

by yuanyi published 2011 07 18 如果你曾經花了許多時間在unix命令列上,那麼或許你已經見過xargs了,如果你還沒聽過xargs,那就先讓我來解釋下,xargs是乙個從標準輸入或許引數並執行命令的程式。常見使用 我常常見到將find和xargs組合使用以對find返回...