openGauss 中如何管理表空间
在 openGauss 中,表空间是一个目录,在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。
表空间可以存在多个,创建好之后,创建数据库对象时可以指定该对象所属的表空间。
创建表空间
执行如下命令创建用户 jack。
openGauss=#CREATE USER jack IDENTIFIED BY 'Bigdata@123';
NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
执行如下命令创建表空间。
openGauss=#CREATE TABLESPACE fastspace RELATIVE LOCATION 'tablespace/tablespace_1';
CREATE TABLESPACE
数据库系统管理员执行如下命令将“fastspace”表空间的访问权限赋予数据用户 jack。
openGauss=#GRANT CREATE ON TABLESPACE fastspace TO jack;
GRANT
在表空间中创建对象
如果用户拥有表空间的 CREATE 权限,就可以在表空间上创建数据库对象,比如:表和索引等。
以创建表为例。
执行如下命令在指定表空间创建表。
openGauss=# CREATE TABLE foo(i int) TABLESPACE fastspace;
CREATE TABLE
查询表空间
检查 pg_tablespace 系统表。如下命令可查到系统和用户定义的全部表空间。
openGauss=# SELECT spcname FROM pg_tablespace;
spcname
pg_default
pg_global
fastspace
(3 rows)
修改表空间
openGauss=# ALTER TABLESPACE fastspace RENAME TO fspace;
ALTER TABLESPACE
删除表空间
注意:表空间下存在对象(表)时,无法删除。
openGauss=# DROP TABLESPACE fspace;
ERROR: tablespace "fspace" is not empty
openGauss=# drop table foo;
DROP TABLE
openGauss=# drop tablespace fspace;
DROP TABLESPACE