应用程序设置,以避免SQL Server数据库表中的超时和死锁

时间:2012-11-09 16:53:20

标签: sql-server-2008

我的应用程序访问一个本地数据库,在那里它将记录插入表中(每天+ --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插入记录时,我也会遇到超时问题。它运行速度很快,但是所有的死锁和超时,我认为这表明设计不佳,并且是灾难的秘诀。

有什么建议吗?

修改

这是其他人帮助的实际陈述。然后我删除了删除并将其作为单独执行的语句包含在我的代码中。订购条款真的会对此有所帮助吗?

0 个答案:

没有答案