Sql-Server
在完全恢復模式下,緩衝區/事務日誌更改何時應用於數據庫數據頁?
當要進行更改時,將數據頁從數據庫數據文件中提取到緩衝區中,並對緩衝區頁進行更改並寫入事務日誌。提前寫日誌。在簡單恢復模式中,緩衝區中的更改將應用於檢查點的數據庫數據頁。檢查點從事務日誌中刷新記錄。因此,不能在此模式下進行事務日誌備份。當尚未進行完整備份時,對於完整/批量恢復模型也是如此。
問題:一旦進行第一次完整備份,數據頁的更改如何以及何時寫入完整/批量恢復模式中的數據庫數據文件?
根據SQL Server Transaction Log Architecture and Management Guide,數據頁首先在記憶體中修改(邏輯寫入)。無論數據庫恢復模型如何,都會以相同的方式發生,只是日誌記錄詳細程度不同。創建包含修改的事務日誌記錄並將其寫入日誌緩衝區記憶體。這些日誌緩衝區總是在修改頁面之前物理寫入磁碟(預寫日誌)。
數據頁可以通過惰性寫入、急切寫入和檢查點過程寫入磁碟。在這些程序將相應的數據頁寫入數據文件之前,將日誌緩衝區刷新到磁碟。
事務日誌緩衝區在以下情況下物理寫入磁碟:1)它們變滿,2)在 COMMIT 期間,當日誌緩衝區包含持久事務的數據時,3)檢查點,或 4)修改的頁面被上述之一寫入磁碟過程。