Stored procedures SQL中的WAITFOR并发问题

Stored procedures SQL中的WAITFOR并发问题,stored-procedures,concurrency,sql-server-2008-r2,Stored Procedures,Concurrency,Sql Server 2008 R2,我们有一个复杂的存储过程,它首先进行插入,然后对特定行进行更新。理想情况下,在完成此请求后,如果用户2点击相同的SP,则必须进行一些选择,而不是更新。 如果在执行第一个操作时同时出现多个请求,那么我们自然会在更新时遇到死锁 我们正在考虑实现WAITFOR,这样SP在启动之前首先在全局临时表中设置一个标志,如果出现第二个请求,它会等待一段时间再试一次,这样在10秒钟后,它可以再试一次,如果看到更新完成,它可以完全跳过以选择逻辑。这样我们就感觉没有用户会死锁,比如说5-10秒后最终会得到返回的结果

我们有一个复杂的存储过程,它首先进行插入,然后对特定行进行更新。理想情况下,在完成此请求后,如果用户2点击相同的SP,则必须进行一些选择,而不是更新。 如果在执行第一个操作时同时出现多个请求,那么我们自然会在更新时遇到死锁

我们正在考虑实现WAITFOR,这样SP在启动之前首先在全局临时表中设置一个标志,如果出现第二个请求,它会等待一段时间再试一次,这样在10秒钟后,它可以再试一次,如果看到更新完成,它可以完全跳过以选择逻辑。这样我们就感觉没有用户会死锁,比如说5-10秒后最终会得到返回的结果


像这样使用WAITFOR很好,还是对未来可能出现的问题使用DB体系结构问题?

这是一个非常危险的想法,数据库已经有足够的功能允许您同时插入和更新记录。您可以使用事务和提示来降低死锁的风险。通常不正确的索引会导致大量死锁

在SQL过程中实现自旋锁通常会出错

我在博客上写了一些你不久前可以使用的模式: