最近生产上有一张日志表超级大,数据几千万已经统计不出来了,2千万的时候就已经查不动了,而且每天还200w的增长着,现在空间已经占到90g,这个日志还很重要,数据不可以删,而且时不时的进行统计,因为统计的时候统计不动,最开始想的办法是一天一天的统计,刚开始很慢但是能统计出来,现在一天的数据也很难统计了
大表用途:
其他系统通过接口调用本系统给官微推送消息
text字段一:接口报文
text字段二:推送官微消息的报文
text字段三:官微系统响应报文
text字段四:异常信息
分析过程:
1、这张表用4个text字段,用于存报文和响应,错误信息等,这些字段都是必须要的,后来把一天的数据100多万存的临时表中,4个text字段换成varchar(2000)后,查询速度显著提升,27秒变成了6秒,其实text字段不仅占用空间,同时还会增加磁盘io
2、text字段换成varchar(2000)后还不够,毕竟表的数据量在那摆着,不利于维护和统计,所有需要拆表:
最终拆成3张表:
api日志表,调用本系统接口都会记录,这一块是现成的,只需要加注解
send_statistic表:主要做统计使用,主要记录统计用到的一些字段和官微发送结果
send_erro表:如果send_statistic表中发送官微消息失败,就在send_erro中记录一下发送官微的报文和错误信息,并于排查问题