tmerclub-doc/基本开发文档/分库分表流程.md
2025-03-19 15:04:57 +08:00

48 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 分库分表流程
## 一、数据库配置
![img.png](../img/基本开发文档/分库分表/配置-01.jpg)
在服务器/root/mall4cloud/shardingsphere/conf/路径下新增该服务的配置
![img.png](../img/基本开发文档/分库分表/配置-02.jpg)
![img.png](../img/基本开发文档/分库分表/配置-03.jpg)
![img.png](../img/基本开发文档/分库分表/配置-04.jpg)
## 二、配置类
### 配置类的位置
- 分库分表的功能模块下,都会在一个`mall4cloud-common/mall4cloud-common-sharding-proxy/src/main/java/com/mall4j/cloud/common/sharding/proxy`包下有自己的配置包
![img.png](../img/基本开发文档/分库分表/配置-05.jpg)
######包中会有三个类
- CustomDatabaseComplexKeysShardingAlgorithm 根据分片的参数,获取数据库的分片名称
- CustomTableComplexKeysShardingAlgorithm 根据分片的参数,获取数据表的分片名称
- ShardingAlgorithmHelper 分片策略辅助组件,根据分片的参数,获取具体的分片编号
配置完成后打包将该目录jar包复制到服务器`/root/mall4cloud/shardingsphere/ext-lib/`位置下,替换原`mall4cloud-common-sharding-proxy.jar`
![img.png](../img/基本开发文档/分库分表/配置-06.jpg)
## 三、注意事项
### 分表
- 同一个功能,相互之间有关联的表,分表数量尽量统一
### 使用sql插入数据select
- 查询时,至少要有一个分片的字段作为条件,否则会导致全表查询
- 分片字段作为范围条件时会导致全表查询,如果必须范围查询也要将范围放到一个数据表中,也就是再加一个分片字段,用于定位到目标表
- 查询的数据尽量是在一个表中的,比如查询一个用户的订单(一个用户的订单数据都存放在同一个表中)
- 如果涉及多个表的查询尽量使用es
### 使用sql插入数据insert
- 表中的分片字段都不能为空,否则会报错
### 使用sql更新数据update
- 更新数据时,必须携带一个分片字段,用于定位更新的目标表
- 分片字段作为更新条件时,必须为等于(=),不能作为范围条件
- 分片字段是不能修改的(分片字段用于定位数据存储的库和表,所以保存后无法修改)