在SQL Server中有一個非常重要的命令就是CheckPoint,它主要作用是把緩存中的數(shù)據(jù)寫入mdf文件中。
其實在我們進行insert, update, delete時,數(shù)據(jù)并沒有直接寫入數(shù)據(jù)庫對應的mdf文件中,而是寫入了緩存里,這有點像電驢,因為過于頻繁的寫入會使磁盤的壽命大大減小。
從上圖可以直觀的看出。只有當發(fā)生checkpoint時,數(shù)據(jù)才會被寫入mdf數(shù)據(jù)文件。
checkpoint的語法為:
CHECKPOINT [ checkpoint_duration ],其中checkpoint_duration 是個int類型的整數(shù)值且并且必須大于零,單位是秒,表示SQL Server 數(shù)據(jù)庫引擎會在請求的持續(xù)時間內(nèi)嘗試執(zhí)行檢查點。如果省略該參數(shù),SQL Server 數(shù)據(jù)庫引擎將自動調(diào)整檢查點持續(xù)時間,以便最大程度地降低對數(shù)據(jù)庫應用程序性能的影響。
導致CheckPoint檢查點的事件:
1.在數(shù)據(jù)庫備份之前,數(shù)據(jù)庫引擎會自動執(zhí)行檢查點,以便在備份中包含對數(shù)據(jù)庫頁的全部更改。
2.日志的活動部分超出了服務器在 recovery interval 服務器配置選項中指定的時間內(nèi)可以恢復的大小。
3.日志的 70% 已滿,并且數(shù)據(jù)庫處于日志截斷模式。
當下列條件都為 TRUE 時,數(shù)據(jù)庫就處于日志截斷模式:數(shù)據(jù)庫使用的是簡單恢復模式,并且在執(zhí)行上一條引用數(shù)據(jù)庫的 BACKUP DATABASE 語句后,發(fā)生下列事件之一:
在數(shù)據(jù)庫中執(zhí)行一項最小日志記錄大容量復制操作或一條最條小日志記錄的 WRITETEXT 語句。
執(zhí)行一個在數(shù)據(jù)庫中添加或刪除文件的 ALTER DATABASE 語句。
4.停止服務器也會在服務器上的每個數(shù)據(jù)庫中發(fā)出一個檢查點命令。下列停止 SQL Server 的方法將為每個數(shù)據(jù)庫執(zhí)行檢查點:
使用 SQL Server 配置管理器。
使用 SQL Server Management Studio。
使用 SHUTDOWN 語句。
http://database.ctocio.com.cn/21/11507521.shtml