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)
在删除之前是否有任何理由分离分区?仅删除分区而不分离会对数据库的其他查询产生影响吗?
从手册中。
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