CHECKPOINT (Transact-SQL)

将当前数据库的全部脏页写入磁盘。“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据页。CHECKPOINT 可创建一个检查点,在该点保证全部脏页都已写入磁盘,从而在以后的恢复过程中节省时间。

主题链接图标Transact-SQL 语法约定

语法

CHECKPOINT [ checkpoint_duration ]

参数

  • checkpoint_duration
    以秒为单位指定检查点完成所需的时间。如果指定 checkpoint_duration,则 SQL Server 数据库引擎会在请求的持续时间内尝试执行检查点。checkpoint_duration 必须是一个数据类型为 int 的表达式,并且必须大于零。如果省略该参数,SQL Server 数据库引擎将自动调整检查点持续时间,以便最大程度地降低对数据库应用程序性能的影响。

    注意注意

    在 SQL Server 2000 中,检查点进程的时间范围基于 sp_configure RECOVERY INTERVAL 设置。

注释

出于性能方面的考虑,数据库引擎对内存中数据库页进行修改,但在每次更改后不将页写入磁盘。不过,数据库引擎需要定期执行检查点,以将这些脏页写入磁盘。将脏页写入磁盘时会创建一个已知的正常点,在意外关闭或发生故障后进行恢复的过程中,数据库引擎可以从该点开始应用日志中所包含的更改。有关详细信息,请参阅检查点和日志的活动部分

检查点可以在任意数量的数据库中并发出现。

数据库引擎不能从中断的检查点进行恢复。如果检查点已中断并且需要进行恢复,则数据库引擎必须从前一个成功的检查点开始恢复。

导致检查点的事件

在数据库备份之前,数据库引擎会自动执行检查点,以便在备份中包含对数据库页的全部更改。此外,当出现下列任一情况时,会自动出现检查点:

  • 日志的活动部分超出了服务器在 recoveryinterval 服务器配置选项中指定的时间内可以恢复的大小。

  • 日志的 70% 已满,并且数据库处于日志截断模式。

    当下列条件都为 TRUE 时,数据库就处于日志截断模式:数据库使用的是简单恢复模式,并且在执行上一条引用数据库的 BACKUP DATABASE 语句后,发生下列事件之一:

    • 在数据库中执行一项最小日志记录大容量复制操作或一条最条小日志记录的 WRITETEXT 语句。

    • 执行一个在数据库中添加或删除文件的 ALTER DATABASE 语句。

此外,停止服务器也会在服务器上的每个数据库中发出一个检查点命令。下列停止 SQL Server 的方法将为每个数据库执行检查点:

  • 使用 SQL Server 配置管理器。

  • 使用 SQL Server Management Studio。

  • 使用 SHUTDOWN 语句。

注意注意

SHUTDOWN WITH NOWAIT 语句关闭 SQL Server 而不在每个数据库中执行检查点。这可能会导致后来重新启动以恢复服务器上的数据库的时间比通常时间长。

  • 在命令提示符窗口中使用 net stop mssqlserver 命令。

  • 使用“控制面板”中的“服务”,选择 mssqlserver,然后单击**“停止”**。

  • 使群集中的实例处于脱机状态。

影响检查点操作持续时间的因素

通常,执行检查点操作所需的时间会随着该操作必须写入的脏页数的增加而增加。为了将对其他应用程序性能的影响降到最低,默认情况下,SQL Server 会调整检查点操作所执行的写频率。SQL Server 对自动检查点以及任何未指定 checkpoint_duration 值的 CHECKPOINT 语句使用此策略。降低写频率将增加完成检查点操作所需的时间。

可以使用 checkpoint_duration 来请求检查点操作在特定的时间内完成。使用 checkpoint_duration 时对性能所造成的影响取决于脏页数、系统中的活动以及指定的实际持续时间。例如,如果正常情况下完成检查点操作需要 120 秒,则将 checkpoint_duration 指定为 45 秒时,SQL Server 用于检查点的资源将比默认情况下分配的资源多。反之,将 checkpoint_duration 指定为 180 秒时,SQL Server 分配的资源将比默认情况下分配的资源少。总之,checkpoint_duration 较短时,会增加用于检查点的资源,而 checkpoint_duration 较长时,会减少用于检查点的资源。SQL Server 总是尽可能地完成检查点操作,并且操作完成后,CHECKPOINT 语句将立即返回。因此,完成检查点的时间有时比指定的持续时间短,有时则比指定的持续时间长。

权限

CHECKPOINT 权限默认授予 sysadmin 固定服务器角色以及 db_ownerdb_backupoperator 固定数据库角色的成员,这些权限不可转让。