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 锁监控的更多相关文章

  1. 基于telegraf+influxdb+grafana进行postgresql数据库监控

    前言 随着公司postgresql数据库被广泛应用,尤其是最近多个项目在做性能测试的时候都是基于postgresql的数据库,为了确定性能瓶颈是否会出现在数据库中,数据库监控也被我推上了日程.在网上找 ...

  2. PostgreSQL 锁机制浅析

    锁机制在 PostgreSQL 里非常重要 (对于其他现代的 RDBMS 也是如此).对于数据库应用程序开发者(特别是那些涉及到高并发代码的程序员),需要对锁非常熟悉.对于某些问题,锁需要被重点关注与 ...

  3. postgresql 锁的定位

    今天碰到了一个问题,锁定穷根追底把postgresql的锁研究了一番. 数据库查看锁 可以通过表 pg_locks来查看有哪些锁.sql如下: select a.locktype,a.database ...

  4. PostgreSQL 锁等待诊断详解

    摘要PostgreSQL和大多数传统RDBMS一样,都设计了大量的锁来保证并发操作的数据一致性. 同时PG在设计锁等待时,以队列方式存储等待锁. 参考 ProcSleep()@src/backend/ ...

  5. Postgresql 锁查看

    之前版本 PostgreSQL 的 pg_stat_activity 视图的 waiting 字段判断会话是否等待锁资源(通俗地讲, waiting 值为true表示申请不到锁资源处于等待状态),但是 ...

  6. InnoDB的后台线程(IO线程,master线程,锁监控线程,错误监控线程)和内存(缓冲池,重做日志缓冲池,额外内存池)

    InnoDB有多个内存块,你可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构. 缓存磁盘上的数据,方便快速地读取,并且在对磁盘文件的数据进行修改之前 ...

  7. PostgreSQL 锁 之 关系级锁

    1.关于锁的基本信息 PostgreSQL 有各种各样的技术来锁定某些东西(或者至少是这样称呼的).因此,我将首先用最笼统的术语解释为什么需要锁,可用的锁类型以及它们之间的区别.然后我们将弄清楚 Po ...

  8. PostgreSQL锁级别及什么操作获取什么锁

    表级锁 大多数的表级锁是由内置的 SQL 命令获得的,但他们也可以通过锁命令来明确获取.可使用的表级锁包括: 访问共享(ACCESS SHARE) - SELECT 命令可在查询中引用的表上获得该锁. ...

  9. postgresql 锁表查询语句

    1 查找锁表的pid select pid from pg_locks l join pg_class t on l.relation = t.oid where t.relkind = 'r' an ...

随机推荐

  1. TGridPanel做一个自动按比例缩放的窗体

    object grdpnlAdd: TGridPanel Left = Top = Width = Height = Align = alClient //重要 BevelOuter = bvNone ...

  2. 后台动态生成GridView列和模版

    考虑到很多数据源是不确定的,所以这时无法在前台设置gridview的表头,需要在后台动态指定并绑定数据. 前台代码如下: <%@ Page Title="主页" Langua ...

  3. Linux 计划任务

    实例: 每5分钟定时访问一个url # crontab -e #*/5 * * * * /usr/bin/curl http://aa.com:8080/tools/sitemap.php >& ...

  4. KVO 键值观察者

    KVO(键值观察者) //监听的创建 -(id)initChildren:(Person *)person { self = [super init]; if (self != nil) { //拥有 ...

  5. ZeroMQ接口函数之 :zmq_poll - I/O多路技术

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_poll zmq_poll(3)    ØMQ Manual - ØMQ/4.1.0 Name zmq_poll  ...

  6. js中addEventListener中第3个参数

    addEventListener中的第三个参 数是useCapture, 一个bool类型.当为false时为冒泡获取(由里向外),true为capture方式(由外向里). <div id=& ...

  7. python技巧 之文件读取

    对于数据分析而言,我们通常需要将文件内容读取到列表中来进行后续的操作. np.array(dataFrame)能将dataFrame类型转换成数组类型. 1.pandas下的文本文件读取(推荐)

  8. iOS CoreAnimation 核心动画

    一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...

  9. bzoj 4503 两个串

    Description 兔子们在玩两个串的游戏.给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现.注意T中可能有“?”字符,这个字符可以匹配任何字符. Input 两行两个字 ...

  10. Oracle 树操作(select…start with…connect by…prior)

    摘自:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html oracle树查询的最重要的就是select…start with ...