我的应用程序访问一个本地数据库,在那里它将记录插入表中(每天+ --30-40万)。我有运行和处理数据并执行这些插入的进程。部分过程涉及从ID表中选择一个唯一的ID,这是使用简单的
完成的 Begin Transaction
Select top 1 @id = siteid from siteids WITH (UPDLOCK, HOLDLOCK)
delete siteids where siteid = @id
Commit Transaction
然后我立即从该表中使用单独的语句删除该id,以便其他进程不会抓取它。这导致了巨大的超时问题,只有4个进程访问它,我很惊讶。检查我的主帖子表以查看是否使用上述ID插入记录时,我也会遇到超时问题。它运行速度很快,但是所有的死锁和超时,我认为这表明设计不佳,并且是灾难的秘诀。
有什么建议吗?
修改
这是其他人帮助的实际陈述。然后我删除了删除并将其作为单独执行的语句包含在我的代码中。订购条款真的会对此有所帮助吗?