美文网首页
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优化

    起因: 甲方爸爸觉得功能A太慢了 代码结构:以用户分组,每组一个队列,执行三个表的fullscan数据,合并数据并...

  • webpack打包优化

    记一次react项目优化的过程优化前,用uglifyjs-webpack-plugin插件压缩js后得到的大小,实...

  • 记一次 ListView 性能优化过程

    奇葩需求催生创新,记一次对 ListView 的性能优化。(当然,RecyclerView 也是一样) 引子 首先...

  • 记一次Alexa网络性能优化

    记一次网络性能优化 基于Alexa的功能认证时,遇到了PTS(Push to Stream Delay)的问题,看...

  • 记一次SQL优化

    同事反应一个接口很慢,查询了一下,接口返回基本都在6秒以上,是有点慢了。一步步排除~~一、访问其他接口都是正常,首...

  • 记一次UITableView优化

    在项目中有一个机器人聊天页面,把历史聊天记录写入本地数据库,下次进入页面时会先从数据库中查询所有历史聊天记录并显示...

  • 记一次程序优化

    入职一周,还算比较清闲。没有一些明确时间点的事情,所以目前的大部分时候,探索成分居多,绞尽脑汁做的某些架构设计,不...

  • 记一次sql优化

    最近为公司写后台程序,就是数据库检索,其实就是拼sql,在测试环境运行没问题,线上却没有数据显示,最后发现是sql...

  • 记一次代码优化

    一、前言 并发运行相比串行执行很好,因为其可以减少执行时间,但是并发用的不对,也会造成资源浪费,本文我们就来探究一...

  • 记一次sql优化

    今天做系统性能优化时,注意到一个请求响应时间竟然达到了7秒,排查发现是后台一个比较复杂的sql语句造成的,虽然这个...

网友评论

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

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