美文网首页
2019-03-15 记一次fullscan优化

2019-03-15 记一次fullscan优化

作者: yo_xx | 来源:发表于2019-03-15 22:25 被阅读0次

    起因: 甲方爸爸觉得功能A太慢了

    代码结构:以用户分组,每组一个队列,执行三个表的fullscan数据,合并数据并生成新数据。

    分析:用户量大概4000+,fullsacan数据大概10w,主要耗时在于fullscan查询和队列消耗

    优化步骤:

    1.  全局: 由于大量用户并不符合创建队列需求,以hash表方式记录每个用户是否符合创建队列,减少队列生成数量并提高队列效率

    2. 局部:以findOne在findAll前进行预查询,以判断当前用户是否有符合条件的数据,并尽量增加可筛选条件,降低findOne的查询范围

    结果:效率提升很多,优化前40分钟的任务,现在2分钟就执行完了

    实现时间:4个工时 

    测试时间:8个工时

    结论:

    1. 队列的创建,排队,销毁等消耗不容忽视

    2. fullscan的效率极低,要尽量避免或想办法替代

    3. 又一次使用hash表解决效率问题(上一次是数据查重),感觉hash表真是个好东西~ 还没试过跳表,如果有机会接触更大量的数据就能用到了吧

    4.  代码功能保持独立性很重要,这次有关于多种数据类型相似的操作方法,我是分开写的,有考虑是否要合并在一起,后来想到易读性很差也不利于维护容易出bug,还是分开写了,好在重复率不算太高,数量不大,只是结构相似

    5. findOne使用了优化过的取值算法,findAll是全遍历吧,所以效率会高很多

    6. 要多些极简耐用的代码~ 🍯

    相关文章

      网友评论

          本文标题:2019-03-15 记一次fullscan优化

          本文链接:https://www.haomeiwen.com/subject/ntrdmqtx.html