背景:在实际生产中,往往会因为数据量的增长而不得不使用分库分表的方式,将数据离散存储来减轻单库单表下的 数据压力,而根据时间来分库分表也是使用的非常多的,下面就简单介绍下两个根据时间分库分表的小案例;
案例一:使用Groovy表达式根据当前时间单库分表
案列二:使用Groovy表达式根据当前时间分库分表
一,使用Groovy表达式根据当前时间单库分表
1)数据库设计
CREATE TABLE `t_user_202101` (
`id` bigint NOT NULL COMMENT '主键',
`user_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
`age` int NOT NULL COMMENT '年龄',
`sex` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别',
`birthday` datetime NOT NULL COMMENT '生日',
`height` int NOT NULL COMMENT '身高',
`weight` int DEFAULT NULL COMMENT '体重',
`year_mouth` int DEFAULT NULL COMMENT '分表字段',
`is_delete` char(1) DEFAULT NULL COMMENT '是否删除 Y:已删除 N:未删除',
`create` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT 'system' COMMENT '创建者',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
`modified` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT 'system' COMMENT '修改者',
`gmt_modified` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改者',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
2),配置yml文件的分表规则
app:
id: zt-frank-shardingSphere-service-9960
name: zt-frank-shardingSphere-service-9960
server:
port: 9960
spring:
application:
name: zt-frank