分片算法
可配置属性:
哈希取模分片算法
类型:HASH_MOD
可配置属性:
属性名称 | 数据类型 | 说明 |
---|---|---|
sharding-count | int | 分片数量 |
基于分片容量的范围分片算法
类型:VOLUME_RANGE
可配置属性:
属性名称 | 数据类型 | 说明 |
---|---|---|
range-lower | long | 范围下界,超过边界的数据会报错 |
range-upper | long | 范围上界,超过边界的数据会报错 |
sharding-volume | long | 分片容量 |
类型:BOUNDARY_RANGE
自动时间段分片算法
类型:AUTO_INTERVAL
可配置属性:
属性名称 | 数据类型 | 说明 |
---|---|---|
datetime-lower | String | 分片的起始时间范围,时间戳格式:yyyy-MM-dd HH:mm:ss |
datetime-upper | String | 分片的结束时间范围,时间戳格式:yyyy-MM-dd HH:mm:ss |
sharding-seconds | long | 单一分片所能承载的最大时间,单位:秒 |
Apache ShardingSphere 内置的标准分片算法实现类包括:
行表达式分片算法
使用 Groovy 的表达式,提供对 SQL 语句中的 和 IN
的分片操作支持,只支持单分片键。 对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的 Java 代码开发,如: t_user_$->{u_id % 8}
表示 表根据 u_id
模 8,而分成 8 张表,表名称为 t_user_0
到 。 详情请参见行表达式。
类型:INLINE
可配置属性:
属性名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
algorithm-expression | String | 分片算法的行表达式 | - |
allow-range-query-with-inline-sharding (?) | boolean | 是否允许范围查询。注意:范围查询会无视分片策略,进行全路由 | false |
可配置属性:
复合行表达式分片算法
详情请参见行表达式。
类型:COMPLEX_INLINE
属性名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
sharding-columns (?) | String | 分片列名称,多个列用逗号分隔。如不配置无法则不能校验 | - |
algorithm-expression | String | 分片算法的行表达式 | - |
allow-range-query-with-inline-sharding (?) | boolean | 是否允许范围查询。注意:范围查询会无视分片策略,进行全路由 | false |
Hint 行表达式分片算法
详情请参见行表达式。
类型:HINT_INLINE
属性名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
algorithm-expression (?) | String | 分片算法的行表达式 | ${value} |
通过配置分片策略类型和算法类名,实现自定义扩展。
可配置属性: