一个表空间
是一个存储数据的、位于主数据目录之外的位置。这使数据能够分布在多个文件系统中,例如将访问频率更高的数据存储在速度更快的存储设备上,或者将表数据和索引拆分到不同的磁盘上。
表空间是在 PostgreSQL 8.0 中引入的。
psql 命令
\db
列出集群可用的表空间的基本信息\db+
显示其他信息,例如表空间大小
系统目录
表空间信息存储在 系统目录 表 pg_tablespace 中。
配置
以下 配置参数 影响表空间的使用
default_tablespace
: 默认表空间,用于在未由CREATE
命令或数据库的默认表空间设置覆盖的情况下创建(非临时)对象(表和索引)temp_tablespaces
: 用于创建临时对象的表空间列表
表空间函数
以下函数提供与表空间相关的的信息
pg_tablespace_databases(tablespace_oid)
: 返回存储在表空间中的对象的数据库的 OID 列表pg_tablespace_location(tablespace_oid)
: 返回表空间目录的磁盘路径 (PostgreSQL 9.2 及更高版本;仅适用于非默认表空间)pg_tablespace_size(tablespace_oid 或 tablespace_name)
: 返回指定表空间的大小 (PostgreSQL 8.1 及更高版本)has_tablespace_privilege(tablespace, privilege)
: 当前用户是否对表空间拥有权限has_tablespace_privilege(user, tablespace, privilege)
: 用户是否对表空间拥有权限
变更历史
开发中
- PostgreSQL 15
allow_in_place_tablespaces
开发 GUC 添加 (提交 7170f215)
- PostgreSQL 14
- 添加了对重新索引表空间的支持 (提交 c5b28604)
- PostgreSQL 8.0
- (提交 2467394e)
参考资料
- PostgreSQL 文档: 表空间
- PostgreSQL 文档: CREATE TABLESPACE
- PostgreSQL 文档: ALTER TABLESPACE
- PostgreSQL 文档: DROP TABLESPACE
- PostgreSQL 文档: default_tablespace
- PostgreSQL 文档: temp_tablespaces
有用链接
- 何时在 PostgreSQL 中使用表空间 - 2020 年 3 月 CyberTec 博客文章