在 Postgres 中改变分区 table 的 table 空间

Altering tablespace for partitioned table in Postgres

在我的数据库中,我在 PostgreSQL 11.2 上有一个名为 'record_partitioned' 的分区 table。 我想将其 table 空间更改为新的 table 空间 'fast_ssd' 因此所有新的 table 来自此 table 的 table 都在 'fast_ssd' table空间.

当我尝试将 tablespace 更改为 'fast_ssd'.

alter table record_partitioned set tablespace fast_ssd;

我明白了:

ALTER TABLE

但是好像什么都没发生!我这样检查 tablespace:

SELECT tablespace,tablename FROM pg_tables where tablename='record_partitioned';

输出为:

 tablespace |     tablename
------------+--------------------
            | record_partitioned

table空间不变

无法对分区 table 执行此操作。每当您创建分区时,您都必须添加一个明确的 TABLESPACE 子句。

另一种方法是设置 default_tablespace 参数,但这也会影响所有其他 table。