我有一个存储过程,其中包含以下代码:
BEGIN TRY
--BEGIN TRANSACTION @TranName
DECLARE @ID int
INSERT INTO [dbo].[a] ([Comment],[Type_Id],[CreatedBy])
VALUES ('test',1,2)
SET @ID = SCOPE_IDENTITY()
INSERT INTO [dbo].[b] ([Can_ID],[Com_ID],[Cal_ID],[CreatedBy])
VALUES (1,@ID,null,2)
UPDATE c SET LastUpdated = GETDATE(), LastUpdatedBy = 2 WHERE b.id = @ID
--COMMIT TRANSACTION @TranName
SELECT * from [View] where a.id=@ID
END TRY
BEGIN CATCH
--ROLLBACK TRANSACTION @TranName
END CATCH
每个语句单独运行时(如现在所示),都会运行得很快。但是,当我们从事务代码中删除注释后,脚本的运行时间从1秒增加到2分钟以上。
系统已经运行了一段时间,之前没有这个问题,我一直在试图搜索关于SQL Server如何处理事务的文档,以防有任何可能影响SQL性能的因素,我想到的唯一一件事就是事务日志...但理想情况下,每个语句也应该在单独的事务中运行,有什么想法吗?