zoukankan      html  css  js  c++  java
  • 采集系统优化:大家接手过的最烂的项目,最坑爹的项目是哪个?

    接手一个采集项目,性能极其低下,一跑公司数据库直接瘫痪。

    采集数据访问密集,但对数据及时性无大要求。

    下面是我接触过最痛苦的一个项目,也应该是此生见过最烂的项目。

    代码层面

    1:一次采集10W条,直接进内存

        优化:分割,以两千条分步处理。

    2:数据进内存时,逐条插入,我不想多说了,(插入前还要验是否有重复数据,走全表扫描,无索引,此条如果规划合适,完全可以避免)

        优化:1):结合业务和数据,比如,此是采集当天,完全可以把当天的需验证的字段全进内存,在内存维护一张小表(或缓存服务器),进行重复验证,将计算挪到本地CPU,避免大量高频的全表扫描。

                2):改为表插入,逐条插入,小数据量还OK,对这种每天近百万的量,简直就是个坑。

    3多线程实现方式错误,用10个线程,牛逼吧,可全都是winform的伪多线程,屁用没有。

         优化:1):改用线程池,咱用真线程

    4设计一踏糊涂,从多个来源,提取数据,取数据汇总,这些数据必有共性,实现的逻辑连基本的封装都没有,每个是一套,完全独立

         优化:1):接口,封装提取逻辑API,实现公共接口。

    5表设计一踏糊涂,同样的数据模型,完全可以放到一张表内,加一个字段区分,这设计的却是完全独立的表,一共20多张表,有没有?!!!!

         最坑爹的是,不同的表,同样含意的字段,要么名字不同,要么大小写不同,写SQL,第一个一个比对。

    6传参数一踏糊涂,连业务对象都未封装,方法内部,完全一个个传参,一次传10个参的不在少数,优化的时候,我得一个一个对参数,参数命名也不规范,眼睛都对花了,天!!!!!!

          前面不是说了么,20多张表呢,优化完1张之后,满以为第二张很顺利,一年瞎了,字段得重新对!!!!!!!

          测试数据呢,会写SQL,满心欢喜的写完一个,以为通用了,呵呵,换到另一个表,先改表名,再照着改字段名,呵呵呵呵

    7全程SQL,且未用第三方作SQL管理,难以维护,更难以优化,我得在这串SQL里找表,找字段!!!!!!!

          优化:1):改用ORM,至少有数据模型,如果用ORM的话会稍微好些,大数据插入依然走SQL,但至少传参,业务整合,维护着更清晰。

    8游标,有统计汇总的功能,但偏偏是用游标实现,一开始统计时,游标会扫描数据,我取个例子,插入或更新10W条,那游标会扫10W次表,同时在跑的这种巨型坑可能有好几个哦,我都想骂娘了!!!!!!!!!!!!!

          优化:1):去游标,游标的细节,这里不想说,因为我也忘了,记住一条,游标走不了数据库的各种优化,能不用就不用,只用在简单函数和触发器里,一次最多扫10条数据,扫多了会哭的。

    9定时调用,原本的实现方式,能吓尿你!

       编译20多个程序,然后用微软的定时器来定时执行某程序,爽吧,我快爽飞了。

       我都快哭了有没有!!!!

       想想这场景,修改项目启动参数,编译,上传,再修改编译,再上传,再修改编译,再上传,我当时这么干的时候,心里都麻了,差点过去打人!

       当然咱是守法好公民,打人是不会的,不过我真的差点背包走人,后来也真走了。

       咱一开始还真这么编译着干,编译了几个,也聪明了,微软的定时器不就自带传参么亲?直接编译一套,我也懒得给他套定时调用框架了,在MAIN方法里写一套参数判断,设定时器的时候,写个参数,这就OK了,只用编译上传一次,不过要在上面复制个20份(因为当时没优化完,有一些数据是要存在程序根目录的文件里)……

      优化:1最好的,网上这么多定时的框架,拿一个用用很难????

              2不知道这些框架,自已写一套简单的又何难?封装个task,定时反射加载,不就OK了?这种实现方式会死人的。

              3最次,我用的那套,用不同的启动参数不就

    我折腾了一个多月,极为痛苦的,把这个项目优化好了,转眼发现,如果要我拿来重作,也就2星期的事

    简洁,优美,高效。

    折腾完了,公司说不要这么项目了。

    浪费了一个多月,给一个51程序员擦屁股,擦了一个多月,公司说,这一个月你什么成果都没有么……

    呵呵呵。

    不过我总算是见识了五年经验一年水平的程序员是什么样了。

    如今想来,依然心有余悸,所幸已经解脱了

    珍爱生命,远离51

    烂项目扔过来,看一眼,吓人,直接闪。

  • 相关阅读:
    [转]如何从无到有建立推荐系统
    sql语句查询重复值
    推荐系统开发中十个关键点整理
    mongodb中的副本集搭建实践
    Unicode对象
    5W1H
    Python中实现switch分支结构
    数据结构-跳跃表
    redis入门笔记(3)
    redis入门笔记(2)
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4048790.html
Copyright © 2011-2022 走看看