如何删除PostgreSQL 9.6中的索引?

时间:2017-10-17 05:31:05

标签: postgresql postgresql-9.6

我尝试过以下命令作为postgres(超级)用户和所有者用户:

Drop index <index_name>;
Drop index <index_name> cascade;
Drop index concurrently <index_name>;

查询不会给出任何错误,但会一直处于挂起状态,直到被取消。

1 个答案:

答案 0 :(得分:4)

您的陈述一般都可以。还有其他进程在索引上有锁定,阻止了drop语句的完成。您可以使用

查看活动语句
SELECT * FROM pg_stat_activity;

如有必要,您应该适当地设置log_statement

修改: pg_locks会为您提供有关特定锁定的信息:

SELECT a.datname,
         c.relname,
         l.transactionid,
         l.mode,
         l.GRANTED,
         a.usename,
         a.query, 
         a.query_start,
         age(now(), a.query_start) AS "age", 
         a.pid 
    FROM  pg_stat_activity a
     JOIN pg_locks         l ON l.pid = a.pid
     JOIN pg_class         c ON c.oid = l.relation
    ORDER BY a.query_start;