如何在 PostgreSQL 9.6 中删除索引?
How to drop an index in PostgreSQL 9.6?
我以 postgres(super) 用户和所有者用户的身份尝试了以下命令:
Drop index <index_name>;
Drop index <index_name> cascade;
Drop index concurrently <index_name>;
查询没有给出任何错误,但在取消之前一直处于挂起状态。
你的陈述大体上没有问题。还有其他进程锁定了索引,阻止了 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;
我以 postgres(super) 用户和所有者用户的身份尝试了以下命令:
Drop index <index_name>;
Drop index <index_name> cascade;
Drop index concurrently <index_name>;
查询没有给出任何错误,但在取消之前一直处于挂起状态。
你的陈述大体上没有问题。还有其他进程锁定了索引,阻止了 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;