---
title: "06-分库分表-支付服务"
created: 2025-12-11
aliases:
- 分库分表-支付服务
tags:
- 项目
---
# 分库分表-支付服务
## 配置
引入 ShardingSphere 的相关依赖
```xml
5.3.2
org.apache.shardingsphere
shardingsphere-jdbc-core
${shardingsphere.version}
logback-classic
ch.qos.logback
```
支付服务相关配置:
```yaml
spring:
datasource:
driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver
url: jdbc:shardingsphere:classpath:shardingsphere-program.yaml
```
shardingsphere-pay.yaml配置:
```yaml
dataSources:
ds_0:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_pay_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
password: root
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_pay_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
password: root
rules:
# 分库分表规则
- !SHARDING
tables:
# 对d_pay_bill表进行分库分表
d_pay_bill:
# 库为damai_pay_0 damai_pay_1 表为d_pay_bill_0 至 d_pay_bill_1
actualDataNodes: ds_${0..1}.d_pay_bill_${0..1}
# 分库策略
databaseStrategy:
standard:
# 使用out_order_no作为分片键
shardingColumn: out_order_no
# 用out_order_no列使用hash取模作为分库算法
shardingAlgorithmName: databasePayHashModModel
# 分表策略
tableStrategy:
standard:
# 使用out_order_no作为分片键
shardingColumn: out_order_no
# 用out_order_no列使用hash取模作为分表算法
shardingAlgorithmName: tablePayHashModModel
# 对d_refund_bill表进行分库分表
d_refund_bill:
# 库为damai_pay_0 damai_pay_1 表为d_refund_bill_0 至 d_refund_bill_1
actualDataNodes: ds_${0..1}.d_refund_bill_${0..1}
# 分库策略
databaseStrategy:
standard:
# 使用out_order_no作为分片键
shardingColumn: out_order_no
# 用out_order_no列使用hash取模作为分库算法
shardingAlgorithmName: databaseRefundHashModModel
# 分表策略
tableStrategy:
standard:
# 使用out_order_no作为分片键
shardingColumn: out_order_no
# 用out_order_no列使用hash取模作为分表算法
shardingAlgorithmName: tableRefundHashModModel
# 具体的算法
shardingAlgorithms:
# d_pay_bill表分库算法
databasePayHashModModel:
type: HASH_MOD
props:
# 分库数量
sharding-count: 2
# d_pay_bill表分表算法
tablePayHashModModel:
type: HASH_MOD
props:
# 分表数量
sharding-count: 2
# d_refund_bill表分库算法
databaseRefundHashModModel:
type: HASH_MOD
props:
# 分库数量
sharding-count: 2
# d_refund_bill表分表算法
tableRefundHashModModel:
type: HASH_MOD
props:
# 分表数量
sharding-count: 2
props:
# 打印真实sql
sql-show: true
```
总结
- d\_pay\_bill表的分库分表都是用的out\_order\_no作为分片键,算法为HASH\_MOD,先hash然后取模
- d\_refund\_bill表的分库分表都是用的out\_order\_no作为分片键,算法为HASH\_MOD,先hash然后取模
支付服务的分库分表配置比较常规,基本都是用out\_order\_no作为分片键
---
**企业级项目导航**:⬅️ [[05-技术精华-全面剖析分库分表|05-技术精华-全面剖析分库分表]] | 06-分库分表-支付服务 | ➡️ [[07-技术精华-解锁分库分表新姿势:基因法完全解读|07-技术精华-解锁分库分表新姿势:基因法完全解读]]