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水平分片/