PostgreSQL 表空间概念(tablespace)

PostgreSQL 表空间不像数据库(database)和模式(schema)能够决定对象的逻辑分布,表空间定义了数据的物理分布。表空间实际上是文件系统中的一个目录,可以把归档数据存储在慢磁盘的表空间中,活跃的经常更新的数据放在快磁盘的表空间中。

一个表空间可以被多个不同的数据库(database)使用,当然一个数据库也可以使用多个表空间。这就意味着逻辑结构与物理数据分布之间并不存在依赖关系。

每个数据库包含一个默认的表空间,数据库中的所有对象默认都创建在这个默认表空间中,除非明确指定使用另外一个表空间。数据库对应的系统目录对象也是存储在这个默认的表空间中。

在数据库初始化的时候,有两个表空间将被创建,如下:

  • pg_default,对应于 PGDATA/base 目录,它作为默认的表空间
  • pg_global,对应于 PGDATA/global 目录,它存储整个 PG 实例中的系统目录对象

如果创建一个自定义的表空间,可以为其指定目录,PG 将会在 PGDATA/pg_tblspc 目录中创建一个符号链接指向该表空间目录。实际上 PG 中使用的所有路径都是相对于 PGDATA 目录的,这样允许将目录移动到任何位置,然后通过符号链接关联。

文章评论

0条评论