使用Shardingsphere进行分表操作
Shardingsphere介绍
Apache ShardingSphere 是一套开源的分布式数据库增强计算引擎,其通过可插拔架构构建基于数据库之上的生态系统,实现包括数据分片、弹性伸缩、加密脱敏等功能为代表的增强能力。shardingsphere官网以及github
分表原因
项目中存在一张设备定位信息记录的表,上线运行后,该表的数据量逐渐加大,虽然后来靠创建索引解决了出现慢查询的问题,但是数据量的问题还是需要解决的。所以决定对该表进行分表。
分表规则
根据当前的数据量以及将来的业务量,决定按照时间进行分表,每月一张表,分片键为定位时间。
分表过程
引入maven依赖
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.1</version>
</dependency>
ShardingSphere的版本可以根据需要自行选择。
配置数据源
shardingsphere:
mode:
type: Memory # 运行模式类型
props:
sql-show: true # 是否输出sql
datasource:
names: ds #数据源名称, 如果有多个的话就用逗号分开
ds:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://mysql/database?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
username: dev
password: qwer1234
分表规则配置
sharding:
tables:
user:
actual-data-nodes: ds.user_$->{2022..2022}0$->{1..9},ds.user_$->{2022..2022}$->{10..12} #标准分片表配置
table-strategy:
standard:
sharding-column: create_time #分片键
sharding-algorithm-name: myinterval # 分片算法名称 自定义
sharding-algorithms:
myinterval:
type: INTERVAL #分片算法
props:
datetime-pattern: 'yyyy-MM-dd HH:mm:ss'
datetime-lower: '2021-01-01 00:00:00'
datetime-upper: '2025-01-01 00:00:00'
sharding-suffix-pattern: 'yyyyMM'
datetime-interval-amount: 1
datetime-interval-unit: 'MONTHS'
浙公网安备 33010602011771号