0

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

有什么建议吗?

编辑

这是这里其他人帮助的实际陈述。然后我删除了删除并将其作为单独执行的语句包含在我的代码中。order by 子句真的有帮助吗?

4

0 回答 0