一个表空间
是存储数据的主数据目录之外的位置。这使得能够跨多个文件系统分发数据,例如,将更频繁访问的数据存储在更快的存储设备上,或者在不同的磁盘之间分割表数据和索引。
表空间是在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 博客文章