GBASE 8s中二级分区的用法

前言

目前二级分区支持的分类有8种:

  1. 一级分区是范围分区
    范围-范围分区
    范围-列表分区
    范围-哈希分区
  2. 一级分区是列表分区
    列表-范围分区
    列表-列表分区
    列表-哈希分区
  3. 一级分区是哈希分区
    哈希-范围分区
    哈希-列表分区

一、一级分区是范围分区的二级分区的创建

该功能仅在 GBase 8s 的 ORACLE 模式下支持。
SECOND LEVEL PARTITION 子句语法图:
在这里插入图片描述
Range Partition Desc语法图:
在这里插入图片描述
Range Subpartition Desc语法图:
在这里插入图片描述
List Subpartition Desc语法图:
在这里插入图片描述
individual_Hash_Subpartitions语法图:
在这里插入图片描述

元素描述asd
电脑$1600
手机$12
元素描述限制语法
column应用分片存储策略的列必须是表中的列标识符
dbspace_name存储表分片的Dbspace最多可以指定 2,048 个 dbspaces。所有存储分片的 dbspaces 必须具有相同的页大小。标识符
partition此处为分片声明的名称在该表的分片名称中必须是唯一的标识符
subpartition_name此处为二级分区声明的名称在该表的分片名称中必须是唯一的标识符
interal分区字段进行分区的值,如果是二级范围分区values less than Interal则是小于这个值如果是二级列表分区则是等于这个值必须是与分片键表达式的数据类型符合的值标识符

用法

  1. 一级分区可以指定一个或多个字段做分区字段;
  2. 二级分区可以在范围,列表,哈希选择其中一种,不能多种二级分区混合使用;
  3. 二级分区为范围分区或者哈希分区可以指定一个或者多个字段做分区字段;
  4. 二级分区为列表分区只能指定一个字段当做分区字段;
  5. 一级分区不能指定dbspace;
  6. 二级分区为范围分区或者哈希分区可以指定dbspace,如果不明确指定则会使用数据库默认dbspace,二级分区为列表分区必须明确指定使用的dbspace;
  7. 一级分区和二级分区的范围分区如果定义多个字段做分区字段,如果其中一个字段设置了maxvalue,那么这个分区的所有字段需要同时设置为maxvalue;
  8. 每个一级范围分区下都可以有一个二级分区设置maxvalue;
  9. 二级范围分区只能有一个子分区为maxvalue;
  10. 整个表分区范围必须按照从小到大创建;
  11. 整个表的所有二级列表分区只能有一个null;
  12. 目前布尔类型(BOOLEAN)、LVARCHAR类型、虚拟列和ROWNUM不支持做分区字段;
  13. 表内的分区字段与非分区字段均不允许重命名列名操作(RENAME COLUMN) 。
示例
范围-范围分区表示例如下:
create table tab1(
	cust_id integer,
	name char(128),
	score integer
)
partition by range(cust_id) 
subpartition by range(score) 
(
	partition p0 values less than (100)
	(
		subpartition p0_1 values less than (50) dbspace dbs1_1, 
		subpartition p0_max values less than (100) dbspace dbs1_2 
	) , 
	partition p1 values less than (200)
	(
		subpartition p1_1 values less than (150) dbspace dbs2_1, 
		subpartition p1_max values less than (200) dbspace dbs2_1
	)
);
范围-列表分区表示例如下:
create table tab2(
	cust_id integer,
	name char(128),
	score integer
)
partition by range(cust_id) 
subpartition by list(score) 
(
	partition p0 values less than (100)
	(
		subpartition shangxun1 values(1,2,3) in dbs1, 
		subpartition zhongxun1 values(4,5,6) in dbs2
	) 
);
范围-哈希分区表示例如下:
create table tab3(
	cust_id integer,
	name char(128),
	score integer
)
partition by range(cust_id) 
subpartition by hash(score) 
(
	partition p0 values less than (100)
	(
		subpartition p0_1 dbspace datadbs1,
		subpartition p0_2 dbspace datadbs2
	) 
);

二、一级分区是列表分区的二级分区的创建

该功能仅在 GBase 8s 的 ORACLE 模式下支持。
SECOND LEVEL PARTITION 子句语法图:
在这里插入图片描述
List Partition Desc语法图:
在这里插入图片描述
Range Subpartition Desc语法图:
在这里插入图片描述
List Subpartition Desc语法图:
在这里插入图片描述
individual_Hash_Subpartitions语法图:
在这里插入图片描述

元素描述限制语法
column应用分片存储策略的列必须是表中的列标识符
dbspace_name存储表分片的Dbspace最多可以指定 2,048 个 dbspaces。所有存储分片的dbspaces 必须具有相同的页大小。标识符
partition此处为分片声明的名称在该表的分片名称中必须是唯一的标识符
subpartition_name此处为二级分区声明的名称在该表的分片名称中必须是唯一的标识符
Interal分区字段进行分区的值,如果是二级范围分区values less than Interal则是小于这个值如果是二级列表分区则是等于这个值必须是与分片键表达式的数据类型符合的值标识符

用法

  1. 一级分区只能指定一个字段做分区字段;
  2. 二级分区可以在范围,列表,哈希选择其中一种,不能多种二级分区混合使用;
  3. 二级分区为范围分区或者哈希分区可以指定一个或者多个字段做分区字段;
  4. 二级分区为列表分区只能指定一个字段当做分区字段;
  5. 一级分区不能指定dbspace。当二级分区是范围分区且没有定义二级分区范围,只定义了唯一的一级分区的时候,如果是一级列表分区必须使用in dbspace_name语法指定dbspace;
  6. 二级分区为范围分区或者哈希分区可以指定dbspace,如果不明确指定则会使用系统默认dbspace;
  7. 二级分区为列表分区必须明确指定使用的dbspace;
  8. 二级分区的范围分区如果定义多个字段做分区字段,如果其中一个字段设置了maxvalue,那么这个分区的所有字段需要同时设置为maxvalue;
  9. 二级范围分区只能有一个子分区为maxvalue;
  10. 整个表的所有二级列表分区只能有一个null;
  11. 目前布尔类型(BOOLEAN)、LVARCHAR类型、虚拟列和ROWNUM不支持做分区字段;
  12. 表内的分区字段与非分区字段均不允许重命名列名操作(RENAME COLUMN) 。
示例
列表-范围分区示例如下:
create table tab4(
	cust_id integer,
	name char(128),
	score integer
)
partition by list(cust_id) 
subpartition by range(score) 
 (
 	partition p0 values (100)
	(
		subpartition p0_1 values less than (50) dbspace dbs1_1, 
		subpartition p0_max values less than (100) dbspace dbs1_2 
	)
);
列表-列表分区示例如下:
create table tab5(
	cust_id integer,
	name char(128),
	score integer
)
partition by list(cust_id) 
subpartition by list(score) 
(
	partition p0 values (100)
	(
		subpartition shangxun1 values(1,2,3) in dbs1, 
		subpartition zhongxun1 values(4,5,6) in dbs2
	) 
);
列表-哈希分区示例如下:
create table tab6(
	cust_id integer,
	name char(128),
	score integer
)
partition by list(cust_id) 
subpartition by hash(score) 
(
	partition p0 values (100)
	(
		subpartition p0_1 dbspace datadbs1,
		subpartition p0_2 dbspace datadbs2
	) 
);

三、一级分区是哈希分区的二级分区的创建

该功能仅在 GBase 8s 的 ORACLE 模式下支持。
SECOND LEVEL PARTITION 子句语法图:
在这里插入图片描述
Individual_Hash_Partitions语法图:
在这里插入图片描述
Range Subpartition Desc语法图:
在这里插入图片描述
List Subpartition Desc语法图:
在这里插入图片描述

元素描述限制语法
column应用分片存储策略的列必须是表中的列标识符
dbspace_name存储表分片的 Dbspace最多可以指定 2,048 个 dbspaces。所有存储分片的 dbspaces 必须具有相同的页大小。标识符
partition此处为分片声明的名称在该表的分片名称中必须是唯一的标识符
subpartition_name此处为二级分区声明的名称在该表的分片名称中必须是唯一的标识符
Interal分区字段进行分区的值,如果是二级范围分区values less than Interal则是小于这个值如果是二级列表分区则是等于这个值必须是与分片键表达式的数据类型符合的值标识符

用法

  1. 一级分区只能指定一个或多个字段做分区字段;
  2. 二级分区可以在范围,列表选择其中一种,不能多种二级分区混合使用;
  3. 二级分区为范围分区可以指定一个或者多个字段做分区字段;
  4. 二级分区为列表分区只能指定一个字段当做分区字段;
  5. 一级分区不能指定dbspace;
  6. 二级分区为范围分区可以指定dbspace,如果不明确指定则会使用系统默认dbspace;
  7. 二级分区为列表分区必须明确指定使用的dbspace;
  8. 二级分区的范围分区如果定义多个字段做分区字段,如果其中一个字段设置了maxvalue,那么这个分区的所有字段需要同时设置为maxvalue;
  9. 哈希分区只能使用指定分区名写法;
  10. 二级范围分区只能有一个子分区为maxvalue;
  11. 整个表的所有二级列表分区只能有一个null;
  12. 目前布尔类型(BOOLEAN)、LVARCHAR类型、虚拟列和ROWNUM不支持做分区字段;
  13. 表内的分区字段与非分区字段均不允许重命名列名操作(RENAME COLUMN) 。
示例
哈希-范围分区表示例如下:
create table tab7(
	pid number(10),
	pname varchar(30),
	sex varchar(20),
	create_date date
) 
partition by hash(sex) 
subpartition by range(pname)
(
	partition p1
	(
		subpartition p1_1 values less than('aa'),
		subpartition p1_2 values less than('dd')
	),
	partition p2
	(
		subpartition p2_1 values less than('ff'),
		subpartition p2_2 values less than('kk')
	)
  );
哈希-列表分区表示例如下:
create table tab8(
	sid number,
	sex varchar(20),
	province varchar(20)
)
partition by hash(sex) 
subpartition by list(province)
(
	partition p1
	(
		subpartition north values('河南','安徽','河北','山东') in dbs1,
		subpartition south values('广东','海南','广西','江西') in dbs1_1,
		subpartition west values('青海','宁夏','山西') in dbs1_2,
		subpartition east values('上海','浙江','江苏') in dbs2
	),
	partition p2
);
  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值