SQL Server 2012的间接检查点(Indirect checkpoint)

间接检查点是 SQL Server 2012 中引入的新检查点类型,它提供自动检查点的可配置数据库级替代方法。在系统崩溃时,间接检查点与自动检查点相比,恢复时间可能更短更可预测。

间接检查点具有以下优点:
1、间接检查点可以减少整体数据库恢复时间;
2、间接检查点使您可以通过控制 REDO 期间随机 I/O 的开销来可靠控制数据库恢复时间。 这使服务器实例不超过给定数据库的恢复时间上限(长时间运行的事务导致过多 UNDO 时间时除外);
3、间接检查点通过在后台不断地将脏页写入磁盘来减小与检查点有关的 I/O 蜂值。
但是,为间接检查点配置的数据库上的联机事务工作负荷可能导致性能下降。 这是因为间接检查点使用的后台写入线程有时增加了服务器实例的总写入负荷。

如何设置和更改间接检查点

间接检查点可以通过使用SSMS或T-SQL在 SQL Server 2012 中设置和更改,也就是更改SQL Server 数据库的目标恢复时间。 默认情况下,目标恢复时间为 0,数据库使用“自动检查点”(由recovery interval 服务器选项控制)。 如果将目标恢复时间设置为大于0,数据库将使用“间接检查点”并为此数据库建立恢复时间上限。
更改目标恢复时间(间接检查点):
在“对象资源管理器”中,连接到某个SQL Server 数据库引擎实例,再展开该实例==》右键单击要更改的数据库,然后单击“属性”命令==》在“数据库属性”对话框中,单击“选项”页==》在“恢复”面板的“目标恢复时间(秒)”字段中,指定要作为此数据库恢复时间上限的秒数(如90秒)。该步骤也可直接通过T-SQL实现:

ALTER DATABASE TestNonContainedDB SET TARGET_RECOVERY_TIME = 90 SECONDS;

SQL Server 2012的间接检查点(Indirect checkpoint)_第1张图片

设置恢复间隔(自动检查点):

在对象资源管理器中,右键单击服务器实例,再选择“属性”==》单击“数据库设置”节点==》在“恢复”下的“恢复间隔(分钟)”框中,键入或选择一个介于 0 到 32767 之间的值,以设置 SQL Server 在启动时用于恢复每个数据库花费的最长时间(分钟)。 默认值为 0,指示由 SQL Server 自动配置。 实际上,这表示每个数据库的恢复时间不超过 1 分钟,对于活动的数据库大约每 1 分钟有一个检查点。其T-SQL实现如下:

USE TestNonContainedDB ;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE ;
GO
EXEC sp_configure 'recovery interval', 3 ;    --3分钟
GO
RECONFIGURE;
GO

SQL Server 2012的间接检查点(Indirect checkpoint)_第2张图片

从上面的设置过程中可以看出,自动检查点是Server实例级别的,而间接检查点是数据库级别的。具体可以参考MSDN

你可能感兴趣的:(sql,数据库,server,服务器,database,SSMS)