PostgreSQL 扩容

在新硬盘上创建表空间,修改表到新表空间实现扩容

新建表空间目录:

mkdir –p /path/to/new_space

新建表空间:

CREATE TABLESPACE "newTablespaceName" location '/path/to/new_space';

修改某个数据库的默认表空间(确保新表空间下该数据库为空)

ALTER DATABASE datx SET default_tablespace = newTablespaceName;


1. 仅库owner和超级用户有权限修改默认表空间;

2. 新的默认表空间对目标库数据库必须是空的;

3. 修改默认表空间后,原来在默认表空间下的表或索引会移动到新表空间下,不在默认表空间下的表或索引不受影响;

修改用户级表空间,但不推荐。

ALTER USER userx SET default_tablespace = newTablespaceName;

修改表级表空间

alter table dsp.custflow_day_ex_202004_1201 set tablespace postgis_1;

查看表信息

select * from pg_tables WHERE schemaname = 'dsp' AND tablename = 'custflow_day_ex_202004_1101';

扩容成功的验证

对数据库执行扩容操作后,执行以下操作确认:原来在默认表空间下的表或索引会移动到新表空间下,不在默认表空间下的表或索引不受影响、新建表或索引在新的表空间下。

# 查看新建表所在的表空间

select * from pg_tables WHERE schemaname = 'dsp' AND tablename = 'custflow_day_ex_202004_1101';

删除表空间

DROP TABLESPACE jkdb;
DROP TABLESPACE IF EXISTS jkdb;
--只有表空间的所属用户或超级用户才可以删除该表空间。在删除表空间之前,必须保证其上所有的数据库对象已经被清空。如果仍然有数据文件放在该表空间上,则DROP命令执行失败。

表空间修改

ALTER TABLESPACE name RENAME TO new_name
ALTER TABLESPACE name OWNER TO{new_owner|CURRENT_USER|SEEION_USER}
ALTER TABLESPACE name SET (tablespace_option=value[,...])
ALTER TABLESPACE name RESET (tablespace_option=value[,...])
参数说明:
RENAME TO:用于更改表空间名称
OWNER TO:用于更改表空间所属用户
SET和RESET:用于设置表空间参数



PostgreSQL 扩容
https://www.hechunyu.com/archives/1698222528117
作者
chunyu
发布于
2022年12月25日
许可协议