GBase 8c数据库中的表空间允许数据库管理员在文件系统中定义存储数据库对象文件的位置。
创建数据库对象时可以通过名称引用表空间。通过使用表空间,可以控制数据库安装的磁盘布局。
使用CREATE TABLESPACE进行表空间定义:
CREATE TABLESPACE fastspace LOCATION 'directory';
该directory必须是已经存在的空目录,且权限属于该用户。后续所有在该表空间中创建的对象都会被存放在这个目录下的文件中。
注:该位置不能为移动存储,如果表空间丢失则集群无法工作。
表空间的创建必须使用超级用户完成,可以给普通用户授权,以便给表空间分配表、索引和数据库。例如,在表空间space1中创建一个表:
CREATE TABLE foo(i int) TABLESPACE space1;
或使用default_tablespace参数:
SET default_tablespace = space1;
CREATE TABLE foo(i int);
其中,temp tablespaces列表用来储存临时表和索引的位置,以及用于大数据集排序等的临时文件的存储位置。
如果创建数据库时没有指定表空间,则会使用其模板数据库的表空间。
初始化数据库集群时会自动创建pg_global和pg_default表空间。pg_global表空间用于共享系统目录,pg_default表空间为template1和template0数据库的默认表空间。
DROP TABLESPACE命令可以删除空的表空间。
pg_tablespace 系统目录可以查看现有表空间的集合。例如:
SELECT spcname FROM pg_tablespace;
gsql程序的\db元命令也可以用来列出现有的表空间。