水平分片表映射关系
逻辑表-水平分片表使用多个物理表(即后端真实数据库中的表)存储数据
所以存在以下一对多映射关系
①分布式数据库实例.逻辑库.逻辑表→存储数据库实例.物理库.物理表
②分布式数据库实例.逻辑库.逻辑表→总物理分表下标
③分布式数据库实例.逻辑库.逻辑表→物理库下标.物理表下标
其中②,③常用于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]情况下,
| 分片值 | 分库下标 | 分表下标 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 0 | 0 |
| 3 | 1 | 1 |
| 4 | 0 | 0 |
| 5 | 1 | 1 |
| 6 | 0 | 0 |
| 7 | 1 | 1 |
| 8 | 0 | 0 |
| 9 | 1 | 1 |
则永远不能使用(0,1),(1,0)分区,实际数据分区少于配置的分区数
在分库范围db_[0,7],分表范围table_[0,6]情况下,
| 分片值 | 分库下标 | 分表下标 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 0 |
| 7 | 7 | 1 |
| 8 | 0 | 2 |
| 9 | 1 | 3 |
存在映射不直观,连续的分片值不尽可能存储在的相同存储节点的问题
所以一般使用②方式进行映射
| 分片值 | 分区下标 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 47 | 47 |
| 48 | 0 |
| 49 | 1 |