sql server是先寫日誌還是數據

我們知道SQL是在內存緩存區中對日誌和數進行操作,然後再寫入物理介質上。內存中的日誌緩衝區與數據緩衝區是獨立管理的。那麼日誌和數據到底是誰先寫入物理介質?還是寫入順序無關緊要呢?

  一、什麼是WAL

  sql server2000與對沒有提交的事務,在把數據寫入物理介質之前,必須先把日誌寫和物理介質。這就是WAL(Write ahead Log),先寫日誌的原則。

  二、爲什麼必須WAL

  讓我們假設一下先寫入數據這種情況。如先把數據緩衝區的數據寫入物理介質,數據已發生變化。但因爲一些原因日誌緩衝區的數據丟失了,則會造成數據的不一致。而日誌緩衝的數據已補破壞,數據到底發生了那些變化也無從考究,這樣的數據根本無從恢復。如果執行WAL原則,先把日誌緩衝區中的數據寫入物理介質,即使用日誌緩衝區中的數據發生丟失或破壞,可以通過日誌查出數據發生那些變化,從而可以執行REDO操作,從而保證數據的一致性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章