利用 Navicat 事件设计器解决多微服务对表不同的需求

在生产实践有一个项目,某个表每天新增数据几百万,甚至上千万条。项目采用多服务,有的同事的微服务只需要调用这个表几天的数据,有的同事只需要最近30天,而我这边的微服务需要查询这个表任意一段时间。

由于mysql访问数据超过上千万的数据性能下降很多,而且有的功能需要一些统计,加上原来项目是用mysql,考虑开发成本,暂时不考虑换乘nosql的方案,例如es、hbase等。于是改造成用shardingsphere每月分表。然而问题产生了,我这边访问的表名是TableA_2021_9这个的,而别的几位同事需要访问TableA。

后来想了一个解决方案,不需要他们也改造代码。方案就是保留原来的TableA,采用navicat事件进行调度,TableA只保留最近30天的数据,并每天运行定时任务,把新产生的数据复制一份到分月表。

INSERT INNORE INTO tableA_2021_10 SELECT FROM TableA WHERE START_TIME > DATE_ADD (NOW(), INTERVAL -1 DAY) AND START_TIME < NOW()

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注