注意事项
使用分区表语法之前,请务必确认创建当前的逻辑库时模式指定为自动分区模式(mode='auto' ),非自动分区模式不允许使用分区表的建表语法。您也可以通过
SHOW CREATE DATBASE db_name语法查看当前逻辑库的建表模式。示例如下:CREATE DATABASE part_db mode='auto'; Query OK, 1 row affected (4.29 sec) SHOW CREATE DATABASE part_db; +----------+-----------------------------------------------+ | DATABASE | CREATE DATABASE | +----------+-----------------------------------------------+ | part_db | CREATE DATABASE `part_db` /* MODE = 'auto' */ | +----------+-----------------------------------------------+ 1 row in set (0.18 sec)创建数据库的语法详情,请参见CREATE DATABASE。
如果分区表的主键不含分区键, 且不是自增主键,需要业务保证主键的唯一性。
若创建表时要使用二级分区的相关功能,实例版本必须为5.4.17-16952556及以上。
分区类型介绍
一级分区
PolarDB-X的一级分区支持三大类型6种分区策略(Hash/Key/RangeColumns/Range/List/List Columns):
Hash类型:基于用户指定的分区列或分区函数表达式的值,使用内置的一致性哈希算法计算其哈希值并进行分区路由的策略。按哈希路由算法以及使用方式的不同,Hash类型分为Key分区与Hash分区两种分区策略。
Range类型:基于用户指定的分区列或分区函数表达式的值,通过比较计算来确定其所落在哪些预定义分区的范围并进行分区路由的策略。按是否多个分区列作为分区键以及其使用方式的不同,Range类型分为Range Columns分区与Range分区两种分区策略。
List类型:与Range分区策略类似,基于用户指定的分区列或分区函数表达式的值,通过比较计算来确定其所落在哪些预定义分区的取值集合并进行分区路由的策略。按是否多个分区列作为分区键以及其使用方式的不同,List类型也分为List Columns分区与List分区两种分区策略。
更多详细内容请参见分区类型介绍。
二级分区
PolarDB-X的二级分区支持Hash/Key/RangeColumns/Range/List/List Columns共6种分区策略。因此,PolarDB-X的一级分区与二级分区是完全正交的关系,二级分区支持使用任意两种分区策略进行组合,组合分区的数目支持达36种。
二级分区除了支持36种组合分区外,任意一种组合分区均支持使用模板化定义与非模板化定义两种用法。
模板化与非模板化
模板化二级分区:各个一级分区之下的二级分区的分区数目及其分区边界值始终一致;
非模板化二级分区:各个一级分区之下的二级分的分区数目及其分区边界值允许不一致。
重要
二级分区除了支持36种的组合分区外,任意一种组合分区均支持使用模板化定义与非模板化定义两种用法。
使用二级分区的注意点
分区表默认所有一级分区的二级分区数目之和不允许超过8192;
使用二级分区后,分区表的二级分区数目是所有的一级分区下的二级分区数目之和。因此,分区表的分区数将呈倍级上升。因此,请谨慎控制一级分区与二级分区的各自的分片数目,避免过度分区产生副作用,或超出分区总数限制而报错。




