shardingshphere水平分片
可以分库分表也可以单独进行分表
依赖
父pom
1 |
|
pom
1 |
|
准备数据库和表
数据库1: localhost:3306
数据库2: localhost:3307
分别在两个数据库创建库和表
1 |
|
创建完之后的样子
规则配置
1 |
|
分库规则是
order表中user_id
为偶数时,数据插入server-order0服务器
,user_id
为奇数时,数据插入server-order1服务器
。这样分片的好处是,同一个用户的订单数据,一定会被插入到同一台服务器上,查询一个用户的订单时效率较高。
分表的规则
order表中userId的为偶数时
,数据插入对应服务器的t_order0表
,userId为奇数时
,数据插入对应服务器的t_order1表
。
测试
运行test方法
1 |
|
插入日志
1 |
|
查询
1 |
|
日志
1 |
|
在rules.sharding.sharding-algorithms.type
参数主要用于指定分片算法的类型。以下是一些常见的 type 选项:
参数名称 | 参数描述 |
---|---|
inline | 行表达式分片算法。该算法允许你使用行表达式来定义分片规则,适用于简单的分片场景。 |
hint | Hint 分片算法。该算法允许你使用 Hint 来指定分片规则,适用于一些特殊的分片场景。 |
mod_sharding | 取模分片算法。根据指定的分片数量进行取模运算来进行分片,例如 user_id % 8 |
range_sharding | 范围分片算法。允许你定义一个范围来进行分片,适用于范围查询等场景。 |
hash_sharding | 哈希分片算法。根据指定的哈希算法进行分片,适用于一些需要一致性哈希的场景。 |
rules.sharding.tables.<logic_table_name>.table-strategy
参数用来配置表分片的策略,可配置的属性如下:
1、standard:标准分片策略。
参数名称 | 参数描述 |
---|---|
sharding-column | 分片列名称 |
precise-algorithm-class-name | 精确分片算法类名称,用于 = 和 IN 查询。 |
range-algorithm-class-name | 范围分片算法类名称,用于 BETWEEN 查询。 |
2、complex:复合分片策略。
参数名称 | 参数描述 |
---|---|
sharding-columns | 分片列名称列表,多个列以逗号分隔。 |
algorithm-class-name | 复合分片算法类名称。 |
3、inline:行表达式分片策略。
参数名称 | 参数描述 |
---|---|
sharding-column | 分片列名称。 |
algorithm-expression | 分片算法行表达式,例如:${column} % 2。 |
4、hint:Hint 分片策略。
参数名称 | 参数描述 |
---|---|
algorithm-class-name | Hint分片算法类名称。 |
gitee地址
shardingshphere水平分片
https://zhaops-hub.github.io/2024/04/27/mysql/shardingsphere/shardingshphere水平分片/