CHECKPOINT的工作方式与SQL中的COMMIT相同吗?

时间:2009-06-08 18:35:24

标签: sql sql-server tsql transactions

我通常在存储过程中使用完全显式事务(BEGIN TRANSACTION .... COMMIT)。我只是遇到了一个旧代码,而是在代码中的某些位置使用“CHECKPOINT”。

这不会做同样的事情,对吧?即使数据库处于简单模式,整个事情仍然会作为一个大事务运行,即使中间有一堆检查点卡住了吗?

2 个答案:

答案 0 :(得分:11)

Checkpoint只是将脏页写入磁盘,而不是完全相同。 http://msdn.microsoft.com/en-us/library/ms188748.aspx

答案 1 :(得分:7)

没有

CHECKPOINT与提交/回滚不同且独立。

本文演示了“SQL Server 2000 I/O Basics”(对于SQL Server 2005等仍然可以)。

  • 您可以检查点并写入磁盘但随后回滚

  • BEGIN / COMMIT与恢复模型无关(完整,简单,批量记录)。 TXN必须完成或失败。

  • 如果发生电源故障,数据可能因为CHECKPOINT而在磁盘上但未提交,因此作为数据库启动的一部分回滚。

在过去,它被用于try and "empty" the log of committed entries的简单恢复模型。检查点丢弃了它们。对于完全恢复模型,您需要BACKUP LOG。