POSTGRES:了解锁定的获取时间

问题描述 投票:0回答:1

我目前正在使用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

我想知道的是桌子获得了多长时间的锁定。有什么方法可以检索这些信息吗?

先感谢您。

postgresql postgresql-9.3 postgresql-9.5
1个回答
0
投票

在PostgreSQL中没有锁定的时间。

您可以做的最好的事情是从xact_start获取交易开始时间pg_stat_activity,这是锁定年龄的下限。

事务应该总是很短,因为它们持有锁定的长事务并保持autovacuum不能完成其工作。

如果您有任何长时间运行的事务,那可能是您必须解决的问题。然后锁将不会是这样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.