預寫事務日誌

edwardking888發表於2010-06-22

SQL Server 使用預寫日誌 (WAL),此日誌確保在將關聯的日誌記錄寫入磁碟後再將資料修改寫入磁碟。這維護了事務的 ACID 屬性。有關事務和 ACID 屬性的詳細資訊。

若要了解預寫日誌的工作原理,最重要的是瞭解如何將修改的資料寫入磁碟。SQL Server 維護當必須檢索資料時,將資料頁讀入的緩衝區快取記憶體。資料修改不是直接在磁碟上進行,而是修改高速緩衝儲存器中的頁副本。直到資料庫中出現檢查點,或者必須將修改寫入磁碟才能使用緩衝區來容納新頁時,才將修改寫入磁碟。將修改後的資料頁從高速緩衝儲存器寫入磁碟的操作稱為重新整理頁。在快取記憶體中修改但尚未寫入磁碟的頁稱為“髒頁”。

對緩衝區中的頁進行修改時,將在記錄修改的日誌快取記憶體中生成一條日誌記錄。在將關聯的髒頁從高速緩衝儲存器重新整理到磁碟之前,必須將這條日誌記錄寫入磁碟。如果在寫入日誌記錄前重新整理髒頁,則該髒頁便會在磁碟上建立修改。如果伺服器在將日誌記錄寫入磁碟前失敗,則不能回滾此修改。SQL Server 具有防止在寫入關聯的日誌記錄前重新整理髒頁的邏輯。日誌記錄將在提交事務時寫入磁碟。

注意:

某些 IDE SATA 驅動器在將資料寫入磁碟之前將資料寫入快取在內部記憶體中。這樣會導致預寫日誌無法正確工作。如果正在執行 SQL Server 的計算機使用這些磁碟型別之一,則應啟用 enable_force_flush 選項。

 

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

相關文章