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