[Mycat2]水平分片表映射关系

309 阅读2分钟

水平分片表映射关系

逻辑表-水平分片表使用多个物理表(即后端真实数据库中的表)存储数据

所以存在以下一对多映射关系

①分布式数据库实例.逻辑库.逻辑表→存储数据库实例.物理库.物理表

②分布式数据库实例.逻辑库.逻辑表→总物理分表下标

③分布式数据库实例.逻辑库.逻辑表→物理库下标.物理表下标

其中②,③常用于HASH映射

在①中有以下配置项

物理库名字

物理表名字

在②中有以下配置项

总物理分表下标

其中物理分表就是数据分区即分片,总物理分表下标就是分区下标(序号)

在③中有以下配置项

物理库下标范围

每库物理表下标范围

上述两项如果还与总物理分表下标有数学关系,则还可以配置总物理分表下标

例子1

tbpartition by MOD_HASH (id) tbpartitions 6;

上述分片信息,共6个分区

有分表范围table_[0,5]

例子2

dbpartition by MOD_HASH (id) dbpartitions 8 
tbpartition by MOD_HASH (id) tbpartitions 6;

上述分片信息,共8*6个分区

有分库范围db_[0,7],分表范围table_[0,6],分区范围[0,47]

可以选择②或者③两种方式映射

但是使用③形式,在类似以下情况

在分库范围db_[0,2],分表范围table_[0,2]情况下,

分片值分库下标分表下标
111
200
311
400
511
600
711
800
911

则永远不能使用(0,1),(1,0)分区,实际数据分区少于配置的分区数

在分库范围db_[0,7],分表范围table_[0,6]情况下,

分片值分库下标分表下标
111
222
333
444
555
660
771
802
913

存在映射不直观,连续的分片值不尽可能存储在的相同存储节点的问题

所以一般使用②方式进行映射

分片值分区下标
11
22
33
44
55
66
77
88
99
4747
480
491