码迷,mamicode.com
首页 > 其他好文 > 详细

大数据量情况下查询性能低,耗时长的一种问题以及解决思路

时间:2018-12-11 00:42:54      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:god   背景   解决   产生   mongodb   千万   内存异常   for   list   

背景交代: 1   mongodb 有500万条数据

                 2  经过过滤 还有20多万条数据

要得到上述20w条数据,一次查询得到20多万条,很可能会产生性能问题,于是同事用for循环,每次查询1000条数据,下一次skip 1000条,take 1000条。导致性能及其低下,早上请求,下午才获得完整数据。

 

解决方法思路是将1000改成5000

 

原因: 

第一次 取1000

第二次 先数完前1000行 再取1000

第三次 先数完前2000行 再取1000

 

 

...

第二百次 数完199000 再取1000

这样数了(1000+199000)+(2000+198000)+...=100*200000=2000 0000次  = 两千万次

 

如果是5000的话

数了 40/2*5000=20*5000=10 0000=十万次

 

两者相差200倍

 

这是比较的数行数的差距,另外读数据到内存,每次1000行得到的list 要union 200次,每次5000行得到的list 要union40次。

5000是举的例子,在不发生内存异常的情况下 我觉得越大越好

大数据量情况下查询性能低,耗时长的一种问题以及解决思路

标签:god   背景   解决   产生   mongodb   千万   内存异常   for   list   

原文地址:https://www.cnblogs.com/wholeworld/p/10099905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!