一、查看sql语句是否发生死锁

1.查看数据库的进程。SELECT * FROM pg_stat_activity WHERE datname='死锁的数据库ID ';
检索出来的字段中,【wating 】字段,数据为t的那条,就是死锁的进程,找到对应的【procpid 】列的值。

例如:SELECT  procpid  FROM pg_stat_activity WHERE datname='数据库ID' and waiting ='t';

2.杀掉进程。

kill有两种方式,第一种是:
SELECT pg_cancel_backend(PID);
这种方式只能kill select查询,对update、delete 及DML不生效)

第二种是:
SELECT pg_terminate_backend(PID);
这种可以kill掉各种操作(select、update、delete、drop等)操作

具体查询语句:

--查询阻塞的sql( 死锁了,没有执行通过的sql )
select * from pg_stat_activity aa,
(
select a.locktype,a.database,a.pid,a.mode,a.relation,b.relname from pg_locks a join pg_class b on a.relation=b.oid
where upper(b.relname)='xxx'
) bb
where aa.pid=bb.pid
and aa.waiting='t' --释放 死锁的sql
select pg_cancel_backend(上面查询到的pid)
--查询是否锁表了
select oid from pg_class where relname='可能锁表了的表' --oid是每个表隐藏的id
select pid from pg_locks where relation='上面查出的oid'
--如果查询到了结果 则释放锁定
select pg_cancel_backend(上面查到的pid)

测试PostgreSQL行级锁

Reference:

[1] https://blog.csdn.net/liuxiumeitanjie/article/details/38816871

[2] https://blog.csdn.net/czp11210/article/details/51320700

[3] https://blog.csdn.net/liyazhen2011/article/details/83379225

Postgresql 查看锁的过程的更多相关文章

  1. 并发编程:synchronized 锁升级过程的验证

        关于synchronized关键字以及偏向锁.轻量级锁.重量级锁的介绍广大网友已经给出了太多文章和例子,这里就不再重复了,也可点击链接来回顾一下.在这里来实战操作一把,验证JVM是怎么一步一步 ...

  2. Postgresql 解决锁表

    转载地址:https://blog.csdn.net/cicon/article/details/68068462##一.postgresql解决锁表--查询是否锁表了select oid from ...

  3. sqlserver检测死锁;杀死锁和进程;查看锁信息

    http://blog.sina.com.cn/s/blog_9dcdd2020101nf4v.html sqlserver检测死锁;杀死锁和进程;查看锁信息 ( ::)转载▼ 标签: sql 检测死 ...

  4. Oracle查看锁表

     查看锁表进程SQL语句1: select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     a ...

  5. sqlserver锁表、解锁、查看锁表

    sqlserver锁表.解锁.查看锁表 http://www.cnblogs.com/zfanlong1314/p/3698566.html http://www.cnblogs.com/chjf20 ...

  6. oracle查看锁表进程,杀掉锁表进程[转载]

    select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     ao.object_name,  ...

  7. sql server数据库查看锁表和解锁

    --查看锁表: select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys ...

  8. Oracle 查看锁表进程_杀掉锁表进程 [转]

    查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...

  9. Oracle 查看锁情况

    /*查看锁(lock)情况*/ SELECT ls.osuser os_user_name, ls.username user_name, decode(ls.type, 'RW', 'Row wai ...

随机推荐

  1. 细说python类2——类动态添加方法和slots(转)

    先说一下类添加属性方法和实例添加属性和方法的区别, 类添加属性属于加了一个以类为全局的属性(据说叫静态属性),那么以后类的每一个实例化,都具有这个属性.给类加一个方法也如此,以后类的每一个实例化都具备 ...

  2. hdu6026 Deleting Edges(Dijkstra+思路)

    https://vjudge.net/problem/HDU-6026 我一直想不明白的是,它的乘法是如何保证n-1条边的.后来画了一张图大概能明白了. 结合最后的乘法二层循环的代码来看,当i=4的时 ...

  3. django之ajax补充

    之前的ajax使用都是依据jquery来使用的,本篇会先分析ajax的原生的js代码实现,还有jsonp的介绍和最终使用. 本篇导航: js实现的ajax 同源策略与Jsonp 一.js实现的ajax ...

  4. set non-stop on

    # Enable the async interface. set target-async 1 # If using the CLI, pagination breaks non-stop. set ...

  5. Skyline中加载WMTS地图

    Skyline中默认是Bing地图,必应虽然免费无偏移,但在国内的影像质量并不是很好.不用担心,Skyline支持多种影像图层,包括WFS.WMS.WMTS地图服务.使用地图作为底图有两个好处: (1 ...

  6. 为RecyclerView打造通用Adapter

    ##RecycleView简单介绍 RecyclerView控件和ListView的原理有非常多相似的地方,都是维护少量的View来进行显示大量的数据.只是RecyclerView控件比ListVie ...

  7. 使用多个项目生成Xml文件来显示帮助文档

    终于到这了,我们首先将Product单独作为一个项目 WebAPI2PostMan.WebModel 并引用他,查看文档如下. 你会发现,你的注释也就是属性的描述没有了.打开App_Data/XmlD ...

  8. Navicat http 通道增加验证

    ntunnel_mysql.php 中增加 function check() { if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authen ...

  9. Docker 的插件式设计

    http://www.tuicool.com/articles/MnIRZvJ http://uzhima.com/2016/08/02/what-is-docker-volume-plugin/ 在 ...

  10. Mybatis Generator配置详解

    参考:http://www.jianshu.com/p/e09d2370b796 http://mbg.cndocs.tk <?xml version="1.0" encod ...