读出大量数据,速度慢,内存大,用户体验低如何解决呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hujianxin
V2EX    程序员

读出大量数据,速度慢,内存大,用户体验低如何解决呢?

  •  
  •   hujianxin 2017-04-07 17:52:12 +08:00 2509 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我遇到过一个任务。需要在数据库里面通过用户指定的时间段读取数据,但是如果用户指定的时间跨度大的话,数据量就超大,读取得是分钟级别的。

    这个时候,如果我需要的数据可以分页显示的话,我可以分页查询,这个非常好好解决。

    但是,如果我需要某种计算,非得需要全部的数据才能完成计算,这个时候,用户就需要在网页前面等数分钟,这种情况,用户体验,内存占用都是不可用级别的。

    这种情况,大家一般怎么解决呢?非常感谢!

    12 条回复    2017-04-07 20:24:42 +08:00
    chenqh
        1
    chenqh  
       2017-04-07 17:54:48 +08:00
    加个小时统计,或者按天统计表
    hujianxin
        2
    hujianxin  
    OP
       2017-04-07 17:56:20 +08:00
    @chenqh 谢谢回复,你的意思是让程序后台定时运行吗?然后运行结果写入数据库?
    kingmo888
        3
    kingmo888  
       2017-04-07 17:57:41 +08:00
    需要计算的指标条目应该是固定的吧, 有变动的应该是时间?


    如果上述属实,那应该有最短统计周期吧,比如看 1 小时的数据变化, 1 天的变化等等。

    你在原始数据基础上应该增加计算好的数据项目。比如原始数据是分钟级的,你可以按照最低统计周期为频率,计算需要计算的指标,在用户需要调用时,只是把统计指标加总即可。
    amghost
        4
    amghost  
       2017-04-07 18:07:32 +08:00 via iPhone
    这不是典型的类 mapreduce 场景吗?大数据量还需要快速的处理结果,似乎是矛盾的吧?所以要么你把计算并行化能加快实时处理的速度,要么提前批处理好。
    ovear
        5
    ovear  
       2017-04-07 18:13:02 +08:00
    通过时间颗粒度控制总数据,就是所谓的抽样了
    hujianxin
        6
    hujianxin  
    OP
       2017-04-07 18:16:22 +08:00
    @kingmo888 谢谢回复,有道理,在很多需求的情况下你说的应该没问题,但是得看需求,多谢了。
    hujianxin
        7
    hujianxin  
    OP
       2017-04-07 18:16:44 +08:00
    @ovear 抽样也是个好方法,在很多情况下非常管用,感谢!
    hujianxin
        8
    hujianxin  
    OP
       2017-04-07 18:18:09 +08:00
    @amghost 大哥,突然觉着你说的好对啊,让我茅塞顿开啊,这本身就很矛盾啊!!

    我试着再从需求方面找找原因。

    谢谢
    chenqh
        9
    chenqh  
       2017-04-07 18:25:37 +08:00
    @hujianxin 是的,应该有一张,小时统计表,按天统计表
    Actrace
        10
    Actrace  
       2017-04-07 18:43:01 +08:00
    不歪需求的情况下。

    本来我想说需要实时的话,多个几个读取用的从数据库来搞。不过看你的描述每次都要等数分钟,那么其实需要把一些关键的指标提取出来预处理完成。
    类似于搜索引擎的做法,比如 sphinx 。这类组件叫做索引器,只做条件匹配的部分,并且针对具体的业务有合适的高速算法(或者是解决方案)。
    这样,你的业务中计算的部分通过索引器解决通常是毫秒级别,再通过传统的数据库取出对应的条目,速度应该是非常快的。
    ichou
        11
    ichou  
       2017-04-07 19:23:16 +08:00 via iPhone
    如果需求不可控(搞不清产品想怎么玩),粒度不可控,这种实时还是上搜索引擎吧, ES 一类的
    如果你能撕逼撕赢产品,不想增加额外成本,按楼上各位说的,按时间粒度做预处理
    snnn
        12
    snnn  
       2017-04-07 20:24:42 +08:00 via Android
    实在不行就上 spark
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5352 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 07:46 PVG 15:46 LAX 00:46 JFK 03:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86