一尘不染

PostgreSQL中的Alter Table太慢了

sql

我正在尝试添加新列

ALTER TABLE "Cidade" ADD COLUMN "BoundBox" VARCHAR(255)

到此表:

 "Cidade"
    "Id" integer not null
        constraint "Cidade_PK"
            primary key,
    "Nome" varchar(120),
    "EstadoId" integer not null
        constraint "Estado_Cidade_FK"
            references "Estado",
    "PontoCentralLatitude" numeric,
    "PontoCentralLongitude" numeric

但是查询从未完成,我已经等了5分钟,什么也没发生。该表只有5,000条记录,由于它阻止了对该表的访问,我迫不及待地等待了太多时间。我有一个测试数据库(等于生产版本),并且工作非常迅速。postgres版本是9.5.6。


阅读 405

收藏
2021-05-23

共1个答案

一尘不染

如果您运行的是PostgreSQL 9.6+,则可以pg_blocking_pids()用来查找锁定您的查询的PID。

select pid, pg_blocking_pids(pid) as blocked_by, query as blocked_query
from pg_stat_activity
where pg_blocking_pids(pid)::text != '{}';
2021-05-23