一个非常简单的针对小表(700行)按键进行删除的操作,虽然所有锁定标记均为“已授权”,但有时会在空闲事务中停留数分钟(通常只需几毫秒)。
我该怎么办才能找出是什么原因导致了这种情况? 我正在使用以下选择:
SELECT a.datname,
c.relname,
l.transactionid,
l.mode,
l.GRANTED,
a.usename,
a.waiting,
a.query,
a.query_start,
age(now(), a.query_start) AS "age",
a.pid
FROM pg_stat_activity a
JOIN pg_locks l ON l.pid = a.pid
JOIN pg_class c ON c.oid = l.relation
ORDER BY a.query_start;
显示了许多“RowExclusiveLock”,但所有锁都已被授予...所以我不知道是什么导致了延迟峰值。
commit/rollback/end
或者正在使用具有事务共享的连接池。 - Vao Tsun