我有一个带有模型,控制器和东西的Ruby on Rails应用程序,因此用户请求是作为独立的请求执行的。该应用程序由MS SQL数据库支持。并发(大约100 rpm)并发用户请求会导致数据库资源死锁,因此其中一个请求会因错误而失败。
处理此类情况并避免死锁的正确方法是什么?我正在寻找一个挖掘的大方向。感谢。
答案 0 :(得分:1)
这个blog post有一些非常好的建议可以防止Rails中的死锁并处理它们。
还有一个由DHH编写的嵌入式deadlock_retry gem,当检测到死锁超时时,它会重新尝试3次事务。