[SQL ] 依日期切 partition

楼主: averywu (看文不要只会用横的看)   2021-01-06 17:35:35
数据库名称:MySQL
数据库版本:5.6
内容/问题描述:
一直以来都是用日期去切表,因为资料大约每天成长六百万笔。
资料会大量写入,每五分钟写一次,一天写288次,每次约二万笔左右。
之后就是不定期查询,不会有更新的事发生。
用日期来切表我是用 data_yyyymmdd 去当表名,这样做有个大问题就是
当用户要查询的日期区间很大时,组SQL会组的很长很长(UNION ALL)。
想到也许可以用 partition 来切,但就我所知 partition 要先定义好切成几
个,然后条件是什么。
因为我的资料是每天都有,主要也是依日期去查资料,但是我不可能每天都去
改 partition 的设定。用其它的 key 来切的话,因为不管怎么切,每个分区
的表资料量也不可能少到哪里去,主要的 key 除了日期还有就是设备的 id
但设备的 id 也才三百来个,用设备id切每天每个 partition 成长数是二万,
大约一年就破百万笔了。
我的表资料结构如下:
deviceId : 1~ 30 而且有可能新增,是 index
deviceMachine : 不可做 key,资料没有一致性。
deviceIp : 不可做 key ,是 char(15) 记录IP用。
logTime : datetime 是 index
crc : 不可做 key , 是 char (50) 资料是 csv 资料且没有一致性
devicePwr : 不可做 key , 是 char (50) 资料是 csv 且没有一致性
deviceSNR : 不可做 key ,是 char (50) 资料是 csv 且没有一致性
在这种情况下有什么方法依日期去切表呢?
或是用什么方法切比较适合呢?
头好大QQ
作者: billy522 (过好每一天)   2021-01-06 19:52:00
依照日期(logTime)BY天去切,logTime要加在PK中第一次切表先定义好,之后写SP每日执行切表排程

Links booklink

Contact Us: admin [ a t ] ucptt.com