【发布时间】:2023-02-16 18:42:43
【问题描述】:
postgres 中的 CREATE/DROP INDEX 具有“并发”选项,可用于使 CREATE/DROP 操作不锁定数据库。
https://www.postgresql.org/docs/current/sql-dropindex.html
这让我想知道,为什么定期删除索引需要锁定它索引的表?
我认为它与“CASCADE”或无法在事务中执行 ACID 有关,因为这些是丢失的功能,但我不确定究竟是什么阻止了它。
【问题讨论】:
-
它不锁定“数据库”,它只锁定表。任何 DDL 语句都需要锁定表以防止其他 DDL 或 DML。但由于删除通常是一个非常快速的操作,所以这不是什么大问题
-
更新标题以表示感谢。你对快速下降有什么参考吗?当我想把它作为一个选项呈现给同事时,我会很有用
-
索引基本上是一个查找表,用于索引任何内容。它锁定表以防止某些需要索引的查询进行查找并使索引在查询期间消失。这可能会导致损坏的结果。
-
@AdrianKlaver 如果您将此作为答案发布,我可以将其标记为已接受的答案
标签: postgresql