【发布时间】:2015-08-06 11:32:59
【问题描述】:
我们最近在 Posgres 9.4 中遇到了一些死锁问题。 有些查询根本没有返回,只会无限期地挂起。 经过一番调查,我们发现进程死锁似乎是问题所在。当从Lock Monitoring Postgres Wiki 运行查询时,我们会看到一大堆被阻塞的进程。解决它们的唯一方法是开始杀死其中一些进程,直到 Postgres 能够再次解决问题。
现在我的理解是,Postgres 中的死锁检测器应该能够找出存在死锁,然后通过回滚一个被阻止的事务来解决它,以便另一个可以继续,然后重试第一。 但这不是我们的情况,这些进程无限期地陷入僵局,直到我们杀死它们。
deadlock_timeout 设置为 1s(默认值),我找不到打开或关闭死锁检测器的标志,所以我假设它始终打开。
所以我的问题是死锁检测器是否只能检测某些类型的死锁,如果可以,是哪些?
为什么锁监控 Wiki 上显示的查询可以检测到死锁进程,而死锁检测器本身却不能?
【问题讨论】:
-
如果你真的显示你的锁检查查询的输出会有所帮助
标签: postgresql locking postgresql-9.4