返回首页

gbase数据、南大通用产品文档:GBase8aDDL 优化

更新日期:2024年09月11日

对于集群层主要指合理设定表的分布属性,以及合理选择Hash 分布列。对于
GNode 层主要指压缩参数。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1306

语法格式
create [temporary] table [if not exists] [vc_name.][database_name.]table_name
(create_definition,...)
create_definition:
col_name column_definition
column_definition:
data_type [not null] [default default_value]
[auto_increment] [primary key]
表5- 85 参数说明
参数名称


vc_name
vc 名,可选项。
database_name
数据库名,可选项。
table_name
表名。
data_type
data_type 为tinyint、smallint、int、bigint。
说明

自增列的属性必须为not null;

创建自增列时必须带primary key 关键字(8a 不支持primary key 功
能,此处primary key 仅作为语法兼容);

每个表最多只能有一个自增列。

自增列不能是hash 分布列
示例
示例1:随机分布表上创建自增列

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1015
gbase> CREATE TABLE t1(name varchar(10),id int not null primary key
auto_increment);
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
gbase> SHOW CREATE TABLE t1 \G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"name" varchar(10) DEFAULT NULL,
"id" int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY ("id")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例2:复制表上创建自增列
gbase> CREATE TABLE t2(a int not null primary key auto_increment, b
varchar(100)) replicated;
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
gbase> SHOW CREATE TABLE t2 \G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE "t2" (
"a" int(11) NOT NULL AUTO_INCREMENT,
"b" varchar(100) DEFAULT NULL,
PRIMARY KEY ("a")
)
ENGINE=EXPRESS
REPLICATED
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1016
1 row in set (Elapsed: 00:00:00.00)
示例3:哈希分布表上创建自增列
gbase> CREATE TABLE t3(name varchar(10),id int not null primary key
auto_increment) distributed by ('name');
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
gbase> SHOW CREATE TABLE t3 \G
*************************** 1. row ***************************
Table: t3
Create Table: CREATE TABLE "t3" (
"name" varchar(10) DEFAULT NULL,
"id" int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY ("id")
) ENGINE=EXPRESS DISTRIBUTED BY('name') DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例4:分区表上创建自增列
gbase> CREATE TABLE t4(i int default 0,id int auto_increment primary
key )
partition by range(i) partitions 2
subpartition by hash(i) subpartitions 2
(
partition
p0 values less than (50001)
(subpartition sb0,
subpartition sb1
),
partition
p1 values less than (100001)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1017
(subpartition sb10,
subpartition sb11
)
) ;
Query OK, 0 rows affected (Elapsed: 00:00:00.11)
gbase> SHOW CREATE TABLE t4 \G
*************************** 1. row ***************************
Table: t4
Create Table: CREATE TABLE "t4" (
"i" int(11) DEFAULT '0',
"id" int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY ("id")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
PARTITION BY RANGE (i)
SUBPARTITION BY HASH (i)
(PARTITION p0 VALUES LESS THAN (50001)
(SUBPARTITION sb0 ENGINE = EXPRESS,
SUBPARTITION sb1 ENGINE = EXPRESS),
PARTITION p1 VALUES LESS THAN (100001)
(SUBPARTITION sb10 ENGINE = EXPRESS,
SUBPARTITION sb11 ENGINE = EXPRESS))
1 row in set (Elapsed: 00:00:00.01)

CREATE AGGREGATE FUNCTION 和DROP FUNCTION 语句在GBASE 8a MPP
Cluster 数据库中更新系统表func。函数名、类型和共享库名被保存在该表中。
当前用户必须有INSERT 和DELETE 权限才能创建和删除函数。