CREATE INDEX并发执行,但并发选项在创建后丢失?



在我的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';

我只看到:索引没有CONCURRENTLY选项

我希望索引是用CONCURRENTLY选项创建的。

是否有数据库开关来打开此功能,或者为什么它似乎忽略了CONCURRENTLY?

如前所述,CONCURRENTLY不是索引的属性,而是在不阻塞并发写的情况下创建索引的指令。结果索引不会以任何方式记住该选项。阅读"同时建立索引"一章。

在大表上创建索引可能需要一些时间。系统表可以查询pg_stat_progress_create_index进行进度报告。在此过程中,CONCURRENTLY仍然反映在command列中。

让您感到安慰的是:一旦创建,所有索引都是"并发"的;无论如何,从某种意义上说,它们是自动维护的,而不会阻塞并发的读写(除了防止重复的UNIQUE索引)。

相关内容

  • 没有找到相关文章

最新更新