SQL Server小知識:CheckPoint

drillchina發表於2008-08-04

前面說到Recovery Interval可以控制SQL Server在記憶體中保留多少被修改的資料。其實我們有一個問題沒有講。

那就是記憶體中被修改的資料寫回到磁碟後,也就意味著磁碟中的資料版本和日誌中的資料操作已經同步了。當然也就意味著如果這個時候系統崩潰了,SQL Server就不需要再恢復了。

不過如果真的這個時候崩潰了,那麼SQL Server怎麼知道這些日誌操作的資料已經寫到磁碟了呢,所以SQL Server還有一個概念。

這個概念就是CheckPoint。

當SQL Server將一些被修改過的資料(術語叫Dirty Data)寫回到磁碟後(這個操作的術語叫Flush),SQL Server會在日誌中留下一個標記,以表示這個標記前的資料已經都被寫到磁碟中了,而這個標記就叫做CheckPoint。

因此我們可以這麼說,CheckPoint代表著一次Flush操作。

SQL Server會在以下情況下觸發CheckPoint,也就是進行Flush:

  • SQL Server在正常停止服務的時候
  • 日誌中需要進行恢復的操作要花費超過Recovery Interval的時間時
  • SQL Server可用記憶體不足的情況下
  • 管理員手動遞交CHECKPOINT命令的時候
  • 當日志檔案中的資料超過70%

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