创建锁监控视图

具体如何查询当前的锁等待和持锁信息,您可以通过如下SQL语句创建锁监控视图。

说明 本文的所有SQL命令均在psql客户端中执行,请使用psql连接数据库。

create view v_locks_monitor as

with

t_wait as

(

select a.mode,a.locktype,a.database,a.relation,a.page,a.tuple,a.classid,a.granted,

a.objid,a.objsubid,a.pid,a.transactionid,

b.xact_start,b.query_start,b.usename,b.datname,b.client_addr,b.client_port,b.application_name

from pg_locks a,pg_stat_activity b where a.pid=b.procpid and not a.granted

),

t_run as

(

select a.mode,a.locktype,a.database,a.relation,a.page,a.tuple,a.classid,a.granted,

a.objid,a.objsubid,a.pid,a.transactionid,

b.xact_start,b.query_start,b.usename,b.datname,b.client_addr,b.client_port,b.application_name

from pg_locks a,pg_stat_activity b where a.pid=b.procpid and a.granted

),

t_overlap as

(

select r.* from t_wait w join t_run r on

(

r.locktype is not distinct from w.locktype and

r.database is not distinct from w.database and

r.relation is not distinct from w.relation and

r.page is not distinct from w.page and

r.tuple is not distinct from w.tuple and

r.transactionid is not distinct from w.transactionid and

r.classid is not distinct from w.classid and

r.objid is not distinct from w.objid and

r.objsubid is not distinct from w.objsubid and

r.pid <> w.pid

)

),

t_unionall as

(

select r.* from t_overlap r

union all

select w.* from t_wait w

)

select locktype,datname,relation::regclass,page,tuple,transactionid::text,classid::regclass,objid,objsubid,

string_agg(

'Pid: '||case when pid is null then 'NULL' else pid::text end||chr(10)||

'Lock_Granted: '||case when granted is null then 'NULL' else granted::text end||' , Mode: '||case when mode is null then 'NULL' else mode::text end||' ,

Username: '||case when usename is null then 'NULL' else usename::text end||' , Database: '||case when datname is null then 'NULL' else datname::text end||' , Client_Addr: '||case when client_addr is null then 'NULL' else client_addr::text end||' , Client_Port: '||case when client_port is null then 'NULL' else client_port::text end||' , Application_Name: '||case when application_name is null then 'NULL' else application_name::text end||chr(10)||

'Xact_Start: '||case when xact_start is null then 'NULL' else xact_start::text end||' , Query_Start: '||case when query_start is null then 'NULL' else query_start::text end||' , Xact_Elapse: '||case when (now()-xact_start) is null then 'NULL' else (now()-xact_start)::text end||' ,

chr(10)||'--------'||chr(10)

order by

( case mode

when 'INVALID' then 0

when 'AccessShareLock' then 1

when 'RowShareLock' then 2

when 'RowExclusiveLock' then 3

when 'ShareUpdateExclusiveLock' then 4

when 'ShareLock' then 5

when 'ShareRowExclusiveLock' then 6

when 'ExclusiveLock' then 7

when 'AccessExclusiveLock' then 8

else 0

end ) desc,

(case when granted then 0 else 1 end)

) as lock_conflict

from t_unionall

group by

locktype,datname,relation,page,tuple,transactionid::text,classid,objid,objsubid;

mysql 视图锁_如何诊断和处理锁等待相关推荐

  1. mysql 查看锁_别吵吵,分布式锁也是锁

    Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订单,看着属下们尽心尽职地工作,完成人类的请求,Tomcat就 ...

  2. redis setnx 分布式锁_手写Redis分布式锁

    分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...

  3. 正在等待缓存锁:无法获得锁_一句话说清分布式锁,进程锁,线程锁

    推荐阅读 1. Java 性能优化:教你提高代码运行的效率 2. Java问题排查工具清单 3. 记住:永远不要在MySQL中使用UTF-8 4. Springboot启动原理解析 在分布式集群系统的 ...

  4. 删除sybase里面的锁_一起来学习分布式锁

    为什么要用分布式锁 我们先来看一个业务场景: 系统 A 是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存 足够了才会给用户下单. 由于 ...

  5. 请列举你了解的分布式锁_终于搞懂分布式锁是什么了!

    当下在互联网技术架构中,最流行的莫过于分布式架构了.为什么大家纷纷都采用分布式架构呢? 1.高效低廉,将部署在高性能机的程序分散在多个小型机中部署: 2.扩展性强,可随着业务的扩展而横向扩展系统的性能 ...

  6. 悲观锁和乐观锁_面试必备之乐观锁与悲观锁

    何谓悲观锁与乐观锁 乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人. 大家可以点 ...

  7. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

  8. 轻量级锁_一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 不看后悔系列...

    重量级锁?自旋锁?自适应自旋锁?轻量级锁?偏向锁?悲观锁?乐观锁?执行一个方法咋这么辛苦,到处都是锁. 今天这篇文章,给大家普及下这些锁究竟是啥,他们的由来,他们之间有啥关系,有啥区别. 重量级锁 如 ...

  9. java 监视锁_【转载】Java锁与监视器

    锁的相关基本概念.了解底层的Object 监视器~ 在Java中,与线程通信相关的几个方法,是定义在Object中的,大家都知道Object是Java中所有类的超类 在Java中,所有的类都是Obje ...

最新文章

  1. 云服务器现安全漏洞及防护措施
  2. Delphi 与 DirectX 之 DelphiX(12): TPictureCollectionItem.DrawAlpha
  3. Chromium:安装depot_tools及获取Chromium源代码
  4. 云效产品体验征文——说出你和云效的故事
  5. IHostingEnvironment VS IHostEnvironment - .NET Core 3.0中的废弃类型
  6. 替换更改登陆页面logo与链接
  7. DataGridView数据导入到Excel 中
  8. Django ORM 知识点总结
  9. LeetCode 451. 根据字符出现频率排序(map+优先队列)
  10. 学习中碰到的一些优化工具包和库
  11. leetcode770. Basic Calculator IV
  12. linux 命令行 播放器,Linux下基于命令行的音乐播放器
  13. Chrome浏览器去广告插件 —— (Adblock Plus)
  14. DisplayTag用法
  15. 摄影毁一生单反穷三代顺口溜_哪款便宜的单反相机好
  16. SharePoint 使用 CMOS 上传、下载、删除文件,新增文件夹
  17. system verilog编程题_SystemVerilog通用程序库(下)
  18. IP地址冲突的原因及其解决方法
  19. 建筑平面布置与防火防烟分区(二)
  20. Scrum Master: 应做和不应做的事情

热门文章

  1. react-native run-android报错的原因,SDK位置未指定
  2. SAP IBASE father component的创建
  3. SAP ABAP Workflow 显示问题
  4. Java Spring源代码学习之how is bean scanned - did not answer when this.beanDefinitionNames is filled
  5. 使用 SAP WebIDE 将SAP UI5 应用部署到 SAP ABAP Netweaver 服务器上
  6. ERP和C4C中的function location
  7. gradle拷贝静态资源文件_Gradle-操作文件文件拷贝
  8. java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...
  9. linux mysql主从配置_linux下mysql主从配置
  10. 英文读法_儿童英语学习-英文字母A