kettle导数据造成Postgresql锁表

在Kettle数据抽取过程中,PostgreSQL表出现锁死现象,导致TRUNCATE、DELETE和DROP TABLE操作无法执行。通过查询pg_locks和pg_stat_activity找出锁定的SQL,并在数据库管理服务器上根据PID结束相关进程,成功解锁表。
摘要由CSDN通过智能技术生成

场景:kettle数据抽取节点A、B,Postgresql集群数据管理节点C。A和B上同时跑着数据抽取任务,有两个任务运行过程中卡住。于是打算重启抽取任务,先truncate这两个表(一个任务对应一个表),问题出现了,有一个表truncate执行卡住,delete卡住,drop table也不行,但是可以insert和select。一定是表锁住了!

解决办法:

1.查询表中存在的锁

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) = 'TABLE_NAME';

 

查到后发现确实存在锁,如下:

 locktype | database |  pid  |      mode       | relation | relname

----------+----------+-------+-----------------+----------+---------

 relation |   439791 | 26752 | AccessShareLock |  2851428 |table_name

 relation |   439791 | 26752 | ExclusiveLock   |  2851428 |table_name

 

2.再根据上面查出来的pid去表pg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值