postgresql CREATE INDEX CONCURRENTLY已执行,但CONCURRENTLY选项在创建后丢失?

zxlwwiss  于 2022-12-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(112)

在AWS RDS上的Postgres 14.3数据库中,我想创建一个索引而不阻塞其他数据库操作,因此我想使用CONCURRENTLY选项,并且我成功地执行了下面的语句。

CREATE INDEX CONCURRENTLY idx_test
    ON public.ap_identifier USING btree (cluster_id);

但在使用以下项检查数据库时:

SELECT * FROM pg_indexes WHERE indexname = 'idx_test';

我只看到:Index without CONCURRENTLY option
我希望索引是用CONCURRENTLY选项创建的。
是否有任何数据库开关可以打开这个特性,或者为什么它似乎忽略了CONCURRENTLY

wj8zmpe1

wj8zmpe11#

如前所述,CONCURRENTLY不是索引的属性,而是创建索引而不阻塞并发写入的指令。生成的索引不会以任何方式记住该选项。请阅读手册中的“并发构建索引”一章。
在大表上创建索引可能需要一段时间。可以查询系统表pg_stat_progress_create_index以获得进度报告。在此期间,CONCURRENTLY仍然反映在command列中。
安慰你的是:一旦创建,所有索引无论如何都是“并发的”,即它们被自动维护而不阻塞并发的读或写(除了防止重复的UNIQUE索引)。

相关问题