3

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

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

如果没关系,那么我不必在我的 .NET TransactionScope 代码中乱扔不必要的scope.Complete()东西,这可能会让我在查看其他明显只读操作的代码时犹豫不决。

谢谢!

4

1 回答 1

4

由于您没有写任何东西,因此您应该选择 Commit,因为它除了关闭事务之外,它还会释放您可能拥有的任何锁。虽然从技术上讲 Rollback 也会做同样的事情,但 Commit 总是比回滚快。

于 2013-08-27T19:09:08.057 回答