开发者社区> 问答> 正文

postgresql-xl无法删除表

在Coordinator上执行删表操作
postgres=# drop table graph.r_credit_info;
过程一直卡着,查看Coordinator上的锁,发现这个语句已经拿到这个对象的AccessExclusiveLock锁
postgres=# select locktype,pid,relation,virtualtransaction,mode,granted from pg_locks where relation='16420';

locktypepidrelationvirtualtransactionmodegranted
relation640751642097/766AccessExclusiveLockt

(1 row)

但是在多个datanode上都发现有个没有pid的行级排它锁阻塞了这个ddl语句
postgres=# select locktype,pid,relation,virtualtransaction,mode,granted from pg_locks where relation='16420';

locktypepidrelationvirtualtransactionmodegranted
relation6043516420141/27963AccessExclusiveLockf
relation 16420-1/31739584RowExclusiveLockt

(2 rows)
尝试过重启集群,这个没有pid的行级排他锁一直存在。

现在这个表只能进行dml操作,但是无法进行ddl操作,各路大神有没有解决的思路?在线等!

展开
收起
declare 2017-12-14 13:53:43 5586 0
3 条回答
写回答
取消 提交回答
  • 是虚拟事务造成的,需要登陆每个DATANODE, 执行COMMIT PREPARED ‘’ 引号里填写gid,gid是根据
    SELECT distinct gid

                    FROM (select a.* from pg_locks a left join pg_class b on a.relation = b.oid where b.relname='表名') pl 
                    LEFT JOIN pg_prepared_xacts ppx ON pl.virtualtransaction = '-1/' || ppx.transaction where pid is  null  查出来的
    

    每个datanode都 COMMIT PREPARED ‘’后 就能删除了 亲测有效

    2019-07-17 21:49:06
    赞同 展开评论 打赏
  • 这个问题你解决了 ?

    2019-07-17 21:49:06
    赞同 展开评论 打赏
  • 一个热爱科技,热爱生活的阳光男孩

    求解

    2019-07-17 21:49:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_杨杰_PostgreSQL-Flashback_Query实现与介绍 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载