我从来没有操作处理过如此大量的真实数据。
我的一个任务,通过kafka流式处理消息框架 消费 整个城市 其中一种手机网络的信号接入信息。
千万级人口,只要有人使用手机网络,就会产生一条数据,可想而知,这个生产数据的效率和数据量有多大。。。
好吧,以前没做过,刚接触。我拿到那些不停生产出来的数据,经过业务处理,在批量插入到oracle中去,程序部署后跑起来,我还是蛮开心的,不过看着日志文件的大小猛涨,
还有服务器硬盘资源被慢慢吃掉,还是挺害怕的。
我是昨天中午左右部署了程序,开始运行的,过了一夜,第二天到公司,因为心里记挂着,一来到公司立马进服务器查看程序运行状况,乖乖,服务器磁盘use 100%
日志文件也大的离谱,再一看oracle,尼玛,昨天看的是几百万的数据,现在数了数,近3亿条数据,懵逼了。
因为这个功能我刚做好,自己上线跑起来测试下,问了同事,原来我在入库的时候,操作并不全面,其中就有一个重要的分区字段,听了之后差不多理解了,自己也看了些资料。
业务场景是这样的,我们存储着全市的手机信号接入数据,而这些数据量非常大,而且只是短时有用,所以流程上的设计是,存储表做分区,因为产生数据太快,就设计了按时间去分区,5分钟一个分区,共有36个分区,也就是180分钟,然后定时任务删除当前分区的上一个分区数据内容,36个分区共计三个小时,此时可以将表看做是一个圆盘,上面平均分布了36个数据盒子,每过5分钟就指向下一个分区盒子,一圈跑完就是3个小时,我的程序会过滤数据,只去处理距当前时间最近2小时之间的数据,也就是说我不停的去入库,但是始终只有最新的2小时数据,而表可以存放最新的3小时数据,insert程序跟delete程序都是独立运行的,insert只管插入,只是