mysql需要按每天分表,但是数据仓库又要在一张表里面,有什么好的方法

已 log log_xx为例(mysql所有数据要插入log表,数据仓库也在log表里面处理)
1、所有日志插入log表,每天凌晨把log表重命名为log_2021xx表,新建一张log表
2、每天凌晨,把log表里前一天的内容移到log_2021xx表,并在log表删除对应的数据
还有什么其他方法吗?

写一个任务shell脚本,放到azkaban进行定时执行即可

可以考虑使用 MySQL 的 HASH 分区,常规的 hash 也是基于分区个数取模(%)运算的

img
这样就创建了20个分区,对应磁盘上就是20个数据文件(orders#p#p0.ibd一直到orders#p#p19.ibd),来看一下SQL的执行过程。

img
从执行计划可以看到,通过分区键user_id过滤,直接可以定位到数据所在的分区 p19(user_id =1019 % 20 = 19,所以在p19分区上),进而去访问p19对应的数据文件 orders#p#p19.ibd 即可获得数据。这种方案的好处就是 MySQL 内部实现 SQL 路由的功能,不用去改造业务代码。

原文链接:https://blog.csdn.net/agonie201218/article/details/110823552