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