PostgreSQL 锁监控

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL 锁监控相关的知识,希望对你有一定的参考价值。

PG>9.2

postgres=# SELECT blocked_locks.pid AS blocked_pid,
postgres-# blocked_activity.usename AS blocked_user,
postgres-# blocking_locks.pid AS blocking_pid,
postgres-# blocking_activity.usename AS blocking_user,
postgres-# blocked_activity.query AS blocked_statement,
postgres-# blocking_activity.query AS current_statement_in_blocking_process
postgres-# FROM pg_catalog.pg_locks blocked_locks
postgres-# JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid
postgres-# JOIN pg_catalog.pg_locks blocking_locks
postgres-# ON blocking_locks.locktype = blocked_locks.locktype
postgres-# AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE
postgres-# AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
postgres-# AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
postgres-# AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
postgres-# AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
postgres-# AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
postgres-# AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
postgres-# AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
postgres-# AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
postgres-# AND blocking_locks.pid != blocked_locks.pid
postgres-#
postgres-# JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
postgres-# WHERE NOT blocked_locks.GRANTED;
blocked_pid | blocked_user | blocking_pid | blocking_user | blocked_statement | current_statement_in_blocking_process
-------------+--------------+--------------+---------------+-------------------+---------------------------------------
(0 rows)

PG< 9.2:

  SELECT bl.pid          AS blocked_pid,
         a.usename       AS blocked_user,
         kl.pid          AS blocking_pid,
         ka.usename      AS blocking_user,
         a.current_query AS blocked_statement
  FROM  pg_catalog.pg_locks         bl
   JOIN pg_catalog.pg_stat_activity a  ON a.procpid = bl.pid
   JOIN pg_catalog.pg_locks         kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
   JOIN pg_catalog.pg_stat_activity ka ON ka.procpid = kl.pid
  WHERE NOT bl.GRANTED;
https://wiki.postgresql.org/wiki/Lock_Monitoring

以上是关于PostgreSQL 锁监控的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 是不是支持表(片段)的透明压缩?

使用python登录pgsql,实现监控PostgreSQL

使用python登录pgsql,实现监控PostgreSQL

postgresql锁

Zabbix监控PostgreSQL

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段