postgresql POSTGRES:查看获取锁的时间

kpbpu008  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(207)

我目前正在使用Postgres作为应用程序的数据库引擎。
我目前有一种情况,我有很多READ锁(AccessSharedLocks)存在。我运行以下查询来检查锁:

SELECT t.schemaname,
t.relname,
l.locktype,
l.page,
l.virtualtransaction,
l.pid,
l.mode,
l.granted
FROM pg_locks l
 JOIN pg_stat_all_tables t ON l.relation = t.relid
WHERE t.schemaname <> 'pg_toast'::name AND t.schemaname <> 'pg_catalog'::name

我想知道的是表获取锁的时间有多长。有什么方法可以让我找回这些信息吗?

gtlvzcf8

gtlvzcf81#

PostgreSQL中没有锁定时间。
您能做的最好的事情是从pg_stat_activity中获取事务开始时间xact_start,这是锁的年龄的下限。
事务应该总是短的,因为长事务会持有锁并阻止autovacuum完成其工作。
如果您有任何长时间运行的事务,这可能是您必须解决的问题。那锁就不成问题了

相关问题