【发布时间】:2014-05-15 09:50:05
【问题描述】:
我的表超时问题。
示例表:
Id BIGINT,
Token uniqueidentifier,
status smallint,
createdate datetime,
updatedate datetime
我正在将来自 2 个不同存储过程的数据插入到此表中,这些存储过程用事务包装(具有特定升级)以及 1 个每 30 秒执行一次的作业。
我只有其中 1 个超时,而奇怪的是它来自简单的一个
BEGIN TRY
BEGIN TRAN
INSERT INTO [dbo].[TempTable](Id, AppToken, [Status], [CreateDate], [UpdateDate])
VALUES(@Id, NEWID(), @Status, GETUTCDATE(), GETUTCDATE() )
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
END CATCH
当此表 (TempTable) 上有一些流量时,此过程会一直超时。
我检查了执行计划,似乎我没有错过两个存储过程中的任何索引。
此外,TempTable 上的唯一索引是 Id 上的集群 PK。
有什么想法吗?
如果需要更多信息,请告知。
使用此表的第二个存储过程不会导致任何大的 IO 或其他问题。
但是,该作业在此表上使用原子UPDATE,最后使用表中的DELETEs,但是当我检查此表的高 IO 时,该作业耗时不超过 3 秒.
谢谢。
【问题讨论】:
-
我认为您不需要对单个语句进行交易。一条语句成功与否。
标签: sql-server tsql timeout