我们正在运行 Postgres 9.3,并且偶尔会遇到死锁问题。目前有人注意到并将手动终止进程。当它们发生时,是否有处理这些问题的最佳实践?我知道有一个statement_timeout
,但是我读到lock_timeout
的deadlock_timeout
大多数地方都表明您不想在postgres.conf
文件中设置它。
只是想看看是否有典型/最佳实践方法。看起来将 deadlock_timeout 设置为 10 分钟就足够了,但我想确保我没有错过一些关键的东西,为什么这是一个坏主意。
10 分钟是一个极高的设置
deadlock_timeout
,这也可以解释为什么你甚至有机会手动干预。默认值为 1 秒,手册建议:我预计您的典型交易不会超过10 分钟。如果您有长时间运行的查询,请尝试 20 秒。
此处还记录了对死锁的最佳防御:
因此,如果您这样做,就不会出现死锁。