48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# 分库分表流程
|
||
|
||
## 一、数据库配置
|
||

|
||
|
||
在服务器/root/mall4cloud/shardingsphere/conf/路径下新增该服务的配置
|
||

|
||
|
||

|
||

|
||
|
||
|
||
## 二、配置类
|
||
|
||
### 配置类的位置
|
||
- 分库分表的功能模块下,都会在一个`mall4cloud-common/mall4cloud-common-sharding-proxy/src/main/java/com/mall4j/cloud/common/sharding/proxy`包下有自己的配置包
|
||
|
||

|
||
|
||
######包中会有三个类
|
||
- CustomDatabaseComplexKeysShardingAlgorithm: 根据分片的参数,获取数据库的分片名称
|
||
- CustomTableComplexKeysShardingAlgorithm: 根据分片的参数,获取数据表的分片名称
|
||
- ShardingAlgorithmHelper: 分片策略辅助组件,根据分片的参数,获取具体的分片编号
|
||
|
||
配置完成后打包,将该目录jar包复制到服务器`/root/mall4cloud/shardingsphere/ext-lib/`位置下,替换原`mall4cloud-common-sharding-proxy.jar`
|
||

|
||
## 三、注意事项
|
||
|
||
### 分表
|
||
- 同一个功能,相互之间有关联的表,分表数量尽量统一
|
||
|
||
### 使用sql插入数据(select)
|
||
|
||
- 查询时,至少要有一个分片的字段作为条件,否则会导致全表查询
|
||
- 分片字段作为范围条件时会导致全表查询,如果必须范围查询也要将范围放到一个数据表中,也就是再加一个分片字段,用于定位到目标表
|
||
- 查询的数据尽量是在一个表中的,比如查询一个用户的订单(一个用户的订单数据都存放在同一个表中)
|
||
- 如果涉及多个表的查询,尽量使用es
|
||
|
||
### 使用sql插入数据(insert)
|
||
|
||
- 表中的分片字段都不能为空,否则会报错
|
||
|
||
### 使用sql更新数据(update)
|
||
|
||
- 更新数据时,必须携带一个分片字段,用于定位更新的目标表
|
||
- 分片字段作为更新条件时,必须为等于(=),不能作为范围条件
|
||
- 分片字段是不能修改的(分片字段用于定位数据存储的库和表,所以保存后无法修改)
|