在丢弃之前是否应该分离分区?

Igo*_*lin 9 postgresql partitioning

我使用的是 PostgreSQL 12,其中有一个分区表。该表有旧分区需要删除。我已经看到了旧分区首先被分离然后才被删除的代码:

ALTER TABLE partitioned_table DETACH PARTITION partitioned_table_1;
DROP TABLE partitioned_table_1;
Run Code Online (Sandbox Code Playgroud)

在删除之前是否有任何理由分离分区?仅删除分区而不分离会对数据库的其他查询产生影响吗?

jia*_*ian 8

从手册中。

  • DROP TABLE partitioned_table_1; 表示删除表。父表上的ACCESS EXCLUSIVE锁。

  • ALTER TABLE partitioned_table DETACH PARTITION partitioned_table_1; 意味着partitioned_table_1仍然存在。 父表上的ACCESS EXCLUSIVE锁

分离的分区继续作为独立表存在,但不再与其分离的表有任何联系。

在 postgresql 14 中, 父表上的DETACH PARTITION partitioned_table_1 CONCURRENTLY SHARE UPDATE EXCLUSIVE锁。更多信息:https://www.postgresql.org/docs/12/sql-altertable.html
https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-DETACH-PARTITION https ://www.postgresql.org/docs/current/ddl-partitioning.html