BEGIN TRAN和COMMIT TRAN的一大块或多个小块

时间:2017-10-24 18:34:52

标签: sql sql-server performance transactions

我有一个存储过程,它执行数百种不同的事务任务(DELETE / INSERT / UPDATE)。令人惊讶的是,它们被分组在一个大的BEGIN TRAN和COMMIT TRAN块中。它曾经运行良好但最近存储过程运行的时间太长,因为数据累积。

我的问题是:如果我将它们分成多个,是否有任何性能提升 较小的BEGIN TRAN和COMMIT TRAN块。如果没有,那么解决方案是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

当您将单个交易分成多个部分时,当然会有性能提升。因为在完成小事务语句之后将提交数据。它将消耗更少的磁盘空间,因为它必须维护较少的事务日志。如果表格不相关,则随意定义多个事务。在一个事务下执行的语句应该在逻辑上完成。