gpt4 book ai didi

ORM 支持处理死锁

转载 作者:行者123 更新时间:2023-12-04 12:26:06 24 4
gpt4 key购买 nike

你知道任何提供死锁恢复的 ORM 工具吗?我知道死锁是一件坏事,但有时任何系统都会因适当的负载而受到影响。在 Sql Server 中,死锁消息显示“重新运行事务”,所以我怀疑重新运行死锁语句是 ORM 上的一个理想特性。

最佳答案

我不知道有任何特殊的 ORM 工具支持自动重新运行由于死锁而失败的事务。但是我不认为 ORM 使处理锁定/死锁问题有很大不同。首先,您应该分析死锁的根本原因,然后以避免或至少减少死锁的方式重新设计您的事务和查询。有很多改进选项,例如为事务的(部分)选择正确的隔离级别,使用锁提示等。这更多地取决于您的数据库系统,而不是您的 ORM。当然,如果您的 ORM 允许您将存储过程用于一些微调的命令等,它会有所帮助。

如果这无助于完全避免死锁,或者您现在没有时间实现和测试真正的修复,当然您可以简单地在您的保存/提交/坚持或任何调用周围放置一个 try/catch,检查如果异常表明失败的事务是“死锁受害者”,则捕获异常,然后在几秒钟休眠后简单地调用保存/提交/持久化。等待几秒钟是一个好主意,因为死锁通常表明存在竞争相同资源的事务的临时高峰,并且一次又一次地快速重新运行相同的事务可能会使事情变得更糟。

出于同样的原因,您可能不会确保只尝试一次重新运行同一事务。

在现实世界的场景中,我们曾经实现过这种解决方法,大约 80% 的“死锁受害者”在第二次尝试中成功了。但我强烈建议深入挖掘以解决死锁的实际原因,因为这些问题通常会随着用户数量呈指数增长。希望有帮助。

关于ORM 支持处理死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com