首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中并发问题的WAITFOR

SQL中并发问题的WAITFOR
EN

Stack Overflow用户
提问于 2012-02-10 14:33:28
回答 1查看 457关注 0票数 1

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

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

像这样使用WAITFOR是很好的,还是对于未来可能出现的一些问题来说是一个DB架构问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-10 15:33:15

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

在SQL proc中实现自旋锁通常会出错。

我在博客上介绍了一些你以前可以用到的模式:http://samsaffron.com/archive/2008/08/27/Deadlocked+

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9223713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档