GBase 8a
其他
文章

南大通用GBase 8a MPP Cluster表空间功能

GBase用户10887
发表于2025-05-09 09:29:18377次浏览0个评论

GBase 8a MPP Cluster一个表空间表示一个数据存储路径。表空间的创建规则是每个库可以存在多个表空间,只有一个默认表空间,一个表空间可以多个表使用,但一个表只能属于一个表空间。
默认情况下,每个库都有一个默认表空间sys_tablespace,sys_tablespace指向现在的固定数据存储路径($GBASE_BASE/config/gbase_8a_gbase.cnf中datadir指定的目录下数据库名目录下sys_tablespace目录中),不可以删除。

建库时指定默认表空间

语法格式

CREATE DATABASE [vc_name.]<database_name> SYSTEM TABLESPACE DATADIR  <path> [SEGSIZE <segsize_value>] [MAXSIZE <max size_value>];
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • path:默认Tablespace所对应的系统路径,路径支持相对路径和绝对路径,相对路径是相对于配置文件中配置的datadir路径。
  • segsize_value:表空间中表的seg文件分裂大小,在10M到2G之间,使用带有K,M,G单位表示,默认为2G。
  • maxsize_value:指定表空间最大限额,它要大于segsize值,使用带有K,M,G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。该参数在集群层指定则表示每个节点的表空间最大限额。资源管理先于表空间进行空间的限额检验。

CREATE TABLESPACE

语法格式

CREATE TABLESPACE [IF NOT EXISTS] [[vc_name.]database_name.]<tablespace_name> DATADIR <path> [SEGSIZE <segsize_value>] [MAXSIZE  <maxsize_value>]
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • tablespace_name:表空间名称,支持数字英文和下划线,长度为64个字符,不区分大小写,全部按照小写字符创建,且不允许以数字开头。(该规则适用于全文,类似内容不再冗述)。
  • path:Tablespace所对应的实际系统路径,路径支持相对路径和绝对路径,相对路径是相对于配置文件中配置的datadir路径;
  • segsize_value:Tablespace中表的seg文件分裂大小,在10M到2G之间,使用带有K、M、G单位表示,默认为2G;
  • maxsize_value:指定表空间最大限额,它要大于segsize值,使用带有K,M,G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。该参数在集群层指定则表示每个节点的表空间最大限额。资源管理先于表空间进行空间的限额检验。

DROP TABLESPACE

语法格式

DROP TABLESPACE [[vc_name.]database_name.]<tablespace_name>;
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • tablespace_name:空间名称。

注意:删除表空间有如下限制:
(1)默认表空间不允许删除;
(2)系统表空间sys_tablespace不允许删除;
(3)正在使用的表空间不允许删除。

ALTER TABLESPACE

功能说明
修改TABLESPACE 最大限额。
语法格式

ALTER TABLESPACE [[vc_name.]database_name.]tablespace_name  MAXSIZE  <maxsize_value>;
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • tablespace_name:表空间名称。
  • maxsize_value:指定表空间最大限额,它要大于segsize值,使用带有K、M、G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。只支持增大修改,不允许减少。资源管理先于表空间进行空间的限额检验。

建表时指定表空间

功能说明
创建表时可以指定要使用的TABLESPACE,不做指定则使用库的默认表空间。分区表作为一个表来看待,只能指定一个tablespace,不支持为不同分区指定不同tablespace。
语法格式

CREATE TABLE [[vc_name.]database_name.]table_name (column_def...) TABLESPASCE=tablespace_name;
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • table_name:表名称。
  • tablespace_name:表空间名称。

说明
(1)CREATE TABLE …LIKE…不支持指定表空间;
(2)CREATE TABLE …AS SELECT…支持指定表空间。

设置库的默认表空间

功能说明
用户可以修改指定库的默认Tablespace,设置数据库的默认Tablespace后,创建表不指定Tablespace时,使用默认Tablespace。该功能不支持针对系统库操作,包括gbase、gctmpdb、performance_schema和information_schema等。
语法格式

USE [[vc_name.]database_name.]tablespace_name AS DEFAULT TABLESPACE;
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • tablespace_name:表空间名称。

说明
使用use前必须保证要设置的tablespace已经创建好。

SHOW TABLESPACES

功能说明
查询表空间信息。
语法格式

SHOW  [full]  TABLESPACES;
  • full:显示是否是默认表空间。

示例

gbase> SHOW FULL TABLESPACES;
+------------------------+------------------------+------------+
| Tablespace_in_test_sdy | Tablespace_in_test_sdy | Is_default |
+------------------------+------------------------+------------+
| sys_tablespace         | .                      | no         |
| tbs1                   | ../tbs1                | yes        |
+------------------------+------------------------+------------+
2 rows in set (Elapsed: 00:00:00.00)

REFRESH TABLESPACE

功能说明
刷新表空间使用大小信息。
语法格式

REFRESH TABLESPACE [[vc_name.]database_name.] tablespace_nameSTORAGE USAGE
  • vc_name:虚拟集群名称,可选项。
  • database_name:数据库名称,可选项。
  • tablespace_name:表空间名称。

注意
(1)不支持gctmpdb库、gclusterdb库下,除SHOW TABLESPACES之外的其他TABLESPACE相关操作;
(2)在建立镜像关系之前,用户需要预先手动在相关节点创建指定的目录和对应的TABLESPACE,且需要用户保证其一致性,镜像关系建立后,支持创建TABLESPACE指令的镜像下发功能;
(3)卸载时,用户自定义表空间的相关目录中的数据会被删除;
(4)关于备份恢复工具,其分为三个等级:实例级、库级和表级。其中,实例级和库级的恢复过程,用户不需要手动建立TABLESPACE和对应的目录,这些工作均由程序完成;表级的恢复过程,需要用户预先手动在指定库中建立好与备份时相同的TABLESPACE;
(5)关于扩容功能,用户需要预先手动在扩容的新节点上将TABLESPACE所需要的目录建立起来,新节点上的创建TABLESPACE的动作由程序自行完成;
(6)关于分区表,按照一个表来对待,用户只能指定一个TABLESPACE,不支持不同分区指定不同TABLESPACE;
(7)对于节点替换功能,用户需要在被替换节点上预先手动建立好TABLESPACE的路径。
 

评论

登录后才可以发表评论