【发布时间】:2012-02-10 06:33:28
【问题描述】:
我们有一个复杂的存储过程,它首先执行 INSERTS,然后在特定行中执行 UPDATES。理想情况下,如果用户 2 命中相同的 SP 并且必须发生一些 SELECTS 而不是 UPDATES,则在完成此请求后。 如果在第一次操作中同时出现多个请求,那么我们自然会在该 UPDATE 上遇到死锁。
我们正在考虑实现 WAITFOR,这样 SP 在启动之前首先在全局临时表中设置一个标志,如果第二个请求到来,它会等待一段时间再试一次,这样在 10 秒后,它可以尝试再次,如果它看到更新完成,它可以完全跳到 SELECT 逻辑。这样我们感觉没有用户会陷入死锁,在说 5-10 秒后最终会返回结果。
是像这样使用 WAITFOR 还是一个数据库架构问题来解决一些可能的未来问题?
【问题讨论】:
标签: stored-procedures concurrency sql-server-2008-r2