MySQL什麼是InnoDB檢查點?

資料庫工作筆記發表於2023-10-30

來源:DBA爛筆頭

瞭解什麼是InnoDB檢查點,以及它們如何與修改頁面的重新整理互動。

檢查點描述了將修改後的資料同步到磁碟的過程。當您修改InnoDB表中的資料時,InnoDB儲存引擎會更改記憶體中的資料innodb_buffer_pool_size指示InnoDB可以為此使用多少記憶體)。當您提交事務時,InnoDB儲存引擎必須將您的事務記錄在磁碟上。這將寫入重做日誌檔案。這些日誌檔案在磁碟上的大小是固定的(由innodb_log_file_size和innodb_log_files_in_group設定)。

如果75%已滿,那麼InnoDB必須將記憶體中已修改的資料同步到磁碟,以保持資料完整性。這被稱為非同步檢查點,它只阻塞執行寫操作的單個執行緒。如果執行緒達到85 %, InnoDB就會使用同步檢查點來阻塞所有執行緒,直到執行緒完成。

InnoDB實際上使用了一種“模糊”檢查點策略,這意味著修改後的資料不會一次寫入磁碟(這可能需要一段時間,並且會阻止使用者訪問InnoDB表),而是以小塊的方式進行同步。這是透過後臺重新整理完成的,其中一部分是自適應重新整理,它根據剩餘的日誌空間量改變其工作速率。延遲寫頁面是好的,因為這允許有更長的時間讓另一個操作可能改變同一頁面上的某些內容,從而潛在地減少頁面寫的總數。

日誌檔案越大,InnoDB需要檢查點或進行普通頁面重新整理的頻率就越低。這提高了執行時效能,因為它減少了磁碟I/O。但是,在5.5版之前,如果伺服器崩潰,較大的日誌檔案可能會將恢復時間增加到不可接受的水平,因為InnoDB必須讀取日誌檔案並恢復自上一個檢查點以來的所有更改。5.5版不再使用相同的恢復邏輯,因此您不再需要人為減少InnoDB日誌檔案的大小來限制恢復時間。沒有辦法InnoDB的一個檢查站。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027826/viewspace-2991737/,如需轉載,請註明出處,否則將追究法律責任。

相關文章