PostgreSQL死锁处理
来源:互联网 发布:手机主题桌面软件 编辑:程序博客网 时间:2024/06/06 05:10
今天遇到一个奇怪的现象,select和delete表时正常执行,但truncate和drop表时会一直运行,也不报错。
查了些资料才发现问题的原因,总结如下:
"drop table " 和 "truncate table " 需要申请排它锁 "ACCESS EXCLUSIVE ", 执行这个命令卡住时,说明此时这张表上还有操作正在进行,比如查询等,
那么只有等待这个查询操作完成,"drop table" 或"truncate table"或者增加字段的SQL 才能获取这张表上的 "ACCESS EXCLUSIVE" 锁 ,操作才能进行下去。
1.检索出死锁进程的ID。
SELECT * FROM pg_stat_activity WHERE datname='死锁的数据库ID ';
检索出来的字段中,【wating 】字段,数据为t的那条,就是死锁的进程。找到对应的【procpid 】列的值。
2.将进程杀掉。
SELECT pg_cancel_backend('死锁那条数据的procpid值 ');
结果:运行完后,再次更新这个表,sql顺利执行。
如果pg_stat_activity 没有记录,则查询pg_locks是否有这个对象的锁
select oid,relname from pg_class where relname='table name';
select locktype,pid,relation,mode,granted,* from pg_locks where relation= '上面查询出来的oid';
select pg_cancel_backend('进程ID');
另外pg_terminate_backend()函数也可以杀掉进程。
- Postgresql死锁的处理
- Postgresql死锁的处理
- PostgreSQL死锁处理
- postgresql死锁处理
- Postgresql死锁的处理
- postgresql死锁
- postgresql 死锁
- postgresql 死锁问题解决记录
- postgresql查看死锁
- postgresql 死锁问题解决记录
- 死锁及死锁处理
- 处理死锁
- 死锁处理
- 处理死锁
- 处理死锁
- 处理死锁
- 处理死锁
- 处理死锁
- <转> Spark 线性代数库 Breeze API 详解
- shape
- Linux基础(2)-Rhel7基本配置
- Spring Data Neo4j个人笔记
- 使用append出的标签用on绑定事件无效的解决方法
- PostgreSQL死锁处理
- 【SSH网上商城项目实战09】添加和更新商品类别功能的实现
- 使用redis-rdb-tools分析reids dump文件及内存使用量
- CentOS 安装 Mogodb(在线 && 离线)
- eclipse 转idea快捷键
- 开发多线程篇—GCD的常见用法
- PHP图层合并
- HTTP协议入门
- JavaWeb中请求编码的一般处理