事務日誌邏輯體系結構

edwardking888發表於2010-06-22

SQL Server 事務日誌按邏輯執行,就好像事務日誌是一串日誌記錄一樣。每條日誌記錄由一個日誌序列號 (LSN) 標識。每條新日誌記錄均寫入日誌的邏輯結尾處,並使用一個比前面記錄的 LSN 更高的 LSN。

日誌記錄按建立時的序列序列儲存。每條日誌記錄都包含其所屬事務的 ID。對於每個事務,與事務相關聯的所有日誌記錄通過使用可提高事務回滾速度的向後指標挨個連結在一個鏈中。

資料修改的日誌記錄或者記錄所執行的邏輯操作,或者記錄已修改資料的前像和後像。前像是執行操作前的資料副本;後像是執行操作後的資料副本。

操作的恢復步驟取決於日誌記錄的型別:

  • 記錄邏輯操作

    • 若要前滾邏輯操作,請再次執行該操作。

    • 若要回滾邏輯操作,請執行相反的邏輯操作。

  • 記錄前像和後像

    • 若要前滾操作,請應用後像。

    • 若要回滾操作,請應用前像。

許多型別的操作都記錄在事務日誌中。這些操作包括:

  • 每個事務的開始和結束。

  • 每次資料修改(插入、更新或刪除)。這包括系統儲存過程或資料定義語言 (DDL) 語句對包括系統表在內的任何表所做的更改。

  • 每次分配或釋放區和頁。

  • 建立或刪除表或索引。

回滾操作也記錄在日誌中。每個事務都在事務日誌中保留空間,以確儲存在足夠的日誌空間來支援由顯式回滾語句或遇到錯誤引起的回滾。保留的空間量取決於在事務中執行的操作,但通常等於用於記錄每個操作的空間量。事務完成後將釋放此保留空間。

日誌檔案中從必須存在以確保資料庫範圍內成功回滾的第一條日誌記錄到最後寫入的日誌記錄之間的部分稱為日誌的活動部分,即“活動日誌”。這是進行資料庫完整恢復所需的日誌部分。永遠不能截斷活動日誌的任何部分。

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

相關文章