簡介
SQL Server2012新增的Indirect CheckPoint允許CheckPoint的恢復間隔設置到數據庫級別,而不是以前那樣實例級別。
在數據庫級別設置的恢復時間以秒為單位,而不是在實例級別的以分鍾為單位。這可以更精確的保證數據庫Recovery的最大時間。
配置Indirect CheckPoint
Indirect Checkpoint是數據庫級別的。在SQL SERVER中,包括Contained Database,SQL Server把一些設置從實例級別轉到了數據庫級別。
按照MSDN上對Indirect CheckPoint的描述,我對Indirect CheckPoint的理解是獨立於實例級別CheckPoint的的額外線程。僅僅負責其所在的數據庫。因此帶來的好處可以歸結如下。
1.更少的數據庫恢復時間(CheckPoint間隔小了,自然恢復時間就少了)
2.更精確的恢復時間。現在不僅僅CheckPoint的范圍縮小了,並且最大恢復時間是以秒為單位。
3.由於這個Indirect CheckPoint線程將其所負責數據庫范圍內的Dirty Page寫入磁盤,所以實例級別的CheckPoint可以減少對磁盤的一次性寫入量。從而減少了實例級別CheckPoint的負載
但是,設置Indirect CheckPoint保證數據庫Recovery時間盡可能短的同時,由於恢復間隔可能變短,在OLTP環境下造成更多的磁盤寫入,有可能給I/O造成額外的負擔
下面來看配置Indirect CheckPoint,我們可以通過SSMS或是T-SQL進行配置
使用SSMS配置Indirect CheckPoint如圖1所示。
圖1.在SSMS中設置CheckPoint
也可以通過設置數據庫的TARGET_RECOVERY_TIME選項來設置恢復時間,如代碼1所示。