处理五千多万条数据有感

        自从实习以后就没什么时间写文章了,今天再写一篇记录一下,主要是给自己看。

       起因是这样的: 以前跟着课程做项目的时候,一直对登录的时候需要增加登录凭证的目的一知半解,一度以为只是为了方便用户,最近因为一次性处理了五千万条数据才猛然醒悟,原来查数据库对性能影响这么大。

        因为五千多万条数据量比较大,而且需要处理成的格式比较复杂,所以一次性直接用IO写时间复杂度太高了,而且只要电脑卡死一下就寄了(其实是因为我太菜了,写不明白复杂多线程的IO处理),于是我决定先把这五千万条数据入库,也方便以后使用,然后我把采集到的数据全部封装成了 Map<String, Map<String, List<Long>>>  这种复杂的格式,然后花了一下午把数据入库了,顺便建了索引,然后就开始想怎么取,因为最终需要处理成类似下面这种格式:

也就是每个时间点需要有所有点位(传感器采集到的数据)的数值,而这样点位有两百多个。

        我套了好几层循环来处理,一开始我每层循环都查一次数据库,总共可能要查几百万次数据库,写了一个小时还没写完一天的数据,然鹅总共有一百多天的数据,也就是电脑要不间断查五六天才能查完,我完全无法忍受,于是我狠狠优化了一波,大大减少了查数据库的次数,然后奇迹发生了,原本一个小时写不了一天,现在十五分钟写完一百多天,太爽了!有一种便秘几天却突然瞬间通畅的快感。

        以前对Redis这种缓存一点也不理解,觉得要查数据库就随便查呗,根本无所谓,为啥非得多此一举搞个缓存,后来,Redis真香!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值