Postgres锁定冲突-为什么需要这么长时间才能清除?

时间:2018-10-19 19:52:05

标签: database postgresql

我有一个带有两个(只有两个)进程的Postgres数据库。其中之一对TABLE_A进行了大量更新(每秒数百次)。第二个过程也会更新TABLE_A,但每分钟可能只会更新十几条记录。

TABLE_A相对较小(3万条记录),并且使用主键一次进行一次更新。

有时该进程似乎挂起。发生这种情况时,我使用第一个查询here,它通常标识由TABLE_A上的UPDATE引起的单个锁定。

如果我只是坐着等,最终锁将消失,并且两个进程又重新开始工作。通常,这需要60到200秒。

为什么要花很长时间整理自己?

每个进程通常可以在不到一秒钟的时间内完成其工作,我会认为,即使发生死锁,第一个进程也将完成其UPDATE,释放其锁,从而允许第二个进程跟随自己的UPDATE?还是我错过了什么?

0 个答案:

没有答案