PostgreSQL 与 MogDB/openGauss 之 表空间

概述

Tablespace是指在文件系统中定义用来存放数据库对象文件的位置,也就是给表指定一个存储目录,在PostgreSQL 和 MogDB/openGauss 数据库的表空间管理方式是不一样的,本文将列举两个数据库之间的异同。

在PostgreSQL 和 MogDB数据库里创建数据库、表和索引的时候,如果没有指定表空间,默认会将数据库对象放在pg_default表空间下(数据目录下的./base目录),一个表空间只属于一个instance,但可以被多个database共用,不同的数据库之间通过database的oid区分。

PostgreSQL 14 MogDB 2.0.1 备注
重命名 支持 支持
修改owner 支持 支持
绝对路径 支持 支持 真实路径会软连到pg_tblspc目录下统一管理
相对路径 - 支持 会在pg_location目录下创建表空间并软连到pg_tblspc目录下统一管理
指定大小 - 支持
重置大小 - 支持
filesystem - 支持
seq_page_cost 支持 支持
random_page_cost 支持 支持
effective_io_concurrency 支持 -
maintenance_io_concurrency 支持 -

语法

PostgreSQL

--创建 CREATE TABLESPACE tablespace_name [ OWNER { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'directory' [ WITH ( tablespace_option = value [, ... ] ) ] tablespace_option可用的参数是:seq_page_cost, random_page_cost, effective_io_concurrency and maintenance_io_concurrency --修改 ALTER TABLESPACE name RENAME TO new_name ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] ) ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )