在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 语句。