对于更便宜/更快的无写事务:COMMIT或ROLLBACK?

时间:2013-08-27 18:52:10

标签: sql-server sql-server-2008 ado.net transactions transactionscope

我正在使用sql事务作为APPLOCKS和其他并发机制的容器,因此我有时会创建各种隔离级别的事务,这些事务只读取数据而不写入。我相信在这些情况下,逻辑上,COMMIT和ROLLBACK具有相同的结果。

出于性能原因,我想知道服务器执行哪个更便宜/更快?是否需要针对COMMIT情况优化的不可避免的簿记以及ROLLBACK的额外开销,即使没有写入?在任何一种情况下都会释放锁。

如果没关系,那么我不必将我的.NET TransactionScope代码丢弃在一个不必要的scope.Complete()上,这可能会让我在审查一个明显只读操作的代码时会犹豫不决。

谢谢!

1 个答案:

答案 0 :(得分:4)

因为你没有写任何东西,所以除了关闭交易之外,你还应该选择Commit,它还会释放你可能拥有的任何锁。虽然技术上Rollback也会做同样的事情,但是Commit总是比回滚更快。