CHECKPOINT与TSQL中的COMMIT一样工作吗?

Bra*_*adC 8 sql t-sql sql-server transactions

我通常在我的存储过程中使用完全显式事务(BEGIN TRANSACTION .... COMMIT).我只是跑过一个旧的,而是在代码中的某些地方使用"CHECKPOINT".

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

aha*_*ins 11

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


gbn*_*gbn 7

没有.

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

本文演示了" SQL Server 2000 I/O基础知识 "(对于SQL Server 2005等仍然可以).

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

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

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

在过去,它曾用于尝试"清空"简单恢复模型的已提交条目的日志.检查点丢弃了它们.对于完全恢复模型,您需要BACKUP LOG.