用户表的数据文件存储在配置文件中指定的“datadir”路径下,位置固定。数据库建好后就不允许更改。且在多磁盘的情况下用户无法控制数据的存储位置,从而引入表空间。
Tablespace功能是在现有固定存储的基础上实现表的数据存储路径用户可配置,主要是用户库和系统库(gctmpdb)库下的表。
GBase 8a MPP Cluster一个表空间表示一个数据存储路径。表空间的创建规则是每个库可以存在多个表空间,只有一个默认表空间,一个表空间可以多个表使用,但一个表只能属于一个表空间。
默认情况下,每个库都有一个默认表空间sys_tablespace,sys_tablespace指向现在的固定数据存储路径($GBASE_BASE/config/gbase_8a_gbase.cnf中datadir指定的目录下数据库名目录下sys_tablespace目录中),不可以删除。
1、创建表空间
create tablespace[ dbname. ] tablespace_name datadir path [segsize value] [maxsige value];
2、使用表空间
create table [dbname.]table_name (column …..) tablespace = tablespace_name;
create table [dbname.]table_name as select …… tablespace = tablespace_name;
3、修改表空间
修改表空间最大限额
alter tablespace[dbname.]tablespace_name maxsige value;
建库时修改默认表空间路径
create database dbname system tablespace datadir path;
修改数据库默认表空间
use tablespace_name as default tablespace;
5、删除表空间
drop tablespace tablespace_name;
6、查询表空间
show full tablespaces [in dbname];
select * from information_schema.tablespaces;
7. 注意:
l 表空间不允许在建库前单独建立
l 不支持gctmpdb库、gclusterdb库下,除SHOW TABLESPACES之外的其他TABLESPACE相关操作;
l 在建立镜像关系之前,用户需要预先手动在相关节点创建指定的目录和对应的TABLESPACE,且需要用户保证其一致性,镜像关系建立后,支持创建TABLESPACE指令的镜像下发功能;
l 卸载时,用户自定义表空间的相关目录中的数据会被删除;
l 关于备份恢复工具,其分为三个等级:实例级、库级和表级。其中,实例级和库级的恢复过程,用户不需要手动建立TABLESPACE和对应的目录,这些工作均由程序完成;表级的恢复过程,需要用户预先手动在指定库中建立好与备份时相同的TABLESPACE;
l 关于扩容功能,用户需要预先手动在扩容的新节点上将TABLESPACE所需要的目录建立起来,新节点上的创建TABLESPACE的动作由程序自行完成;
l 关于分区表,按照一个表来对待,用户只能指定一个TABLESPACE,不支持不同分区指定不同TABLESPACE;
对于节点替换功能,用户需要在被替换节点上预先手动建立好TABLESPACE的路径。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317943.html