sql - 在循环中重试死锁,他们最终会解决吗?

标签 sql database oracle plsql locking

如果我在捕获 ORA-00060 死锁异常 (Oracle 10g) 的 PL/SQL 函数中编写代码,只是回滚并重试事务,这样的函数将在有限的时间内完成(您可以假设数据库要完成的工作是有限的,而不是无限的流)?

我应该在重试前添加等待时间有什么特别的原因吗?

最佳答案

一般来说,这取决于系统中的其他事务,尤其是陷入死锁的其他事务正在做什么。您可能会遇到第二次尝试会因资源锁定而无限期阻塞,甚至遇到第二次死锁的情况。

至少,在实现此解决方案之前,我认为您应该了解死锁是如何产生的,并考虑当第一个 session 出现异常时,其他涉及的 session 可能会发生什么。

关于sql - 在循环中重试死锁,他们最终会解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850037/

相关文章:

mysql - 正确的 mysql 查询到 db

sql - 如何在子查询中使用 LIKE 通配符?

c# - 如何在现有业务数据之上创建 odbc 层?

c# - 如何唯一标识一个计算机程序?

php - 内连接查询建议

sql - postgresql 更新最新行

MySQL UPDATE、MAX、JOIN 查询

sql - Oracle DB 插入并且对重复键不执行任何操作

c - 如何通过 OCI 设置 V$SESSION.PROGRAM?

sql - 仅在并行行之间合并,在 SQL 中