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