关于大数据量查询报表优化

10 篇文章 0 订阅
针对数据量巨大的报表查询,总结了一下几个处理方法:
看一个运用案例:多粒度(年月日,省、地市、热点、ac、ap)下每天20W条,每月800W条,自由选择35天内数据的查询。
直接查询页面崩溃,运用了以下几点,基本上能保证在1-2分钟(100秒左右)内页面相应加载。

[b]一:表分区[/b]
当某张表每天都有上十万,百万的数据量时,考虑每天创建一个分区来存储每天的数据。

[b]二:粒度汇聚[/b]
报表查询中遇到多粒度分组查询的,事先将粒度数据单独汇聚成表,按粒度查询。

[b]三:索引创建[/b]
给关键使用的几个字段创建索引,注意不能使用like对索引字段操作,索引字段也不能使用运算符,否则创建的索引不生效。

[b]四:分页加载[/b]
由于查找的数据量大,一定要用分页加载的方式给页面返回数据。需要注意的是分页的返回条数也不要设置的太小,不然数据页数处理增加也会影响sql速度。比如每页30条数据,在数据量为20W的情况下,比每页15条就快不少。另外注意的是,分页其实分两部分,一部分是count(*),另一部分就是查找返回30条。

[b]五:并行度(/*+ parallel */ )[/b]
当数据量过大时还可以考虑打开数据库的并行度,这样用资源空间换取时间。

创建oracle多线程:

select /*+ parallel(t ,64) */ nick,id from seller t

其中64 代表线程数,这个数最好与linux版本位数一致。

[b]六:加大neginx相应时间[/b]
通过以上5个步骤如果页面相应时间还是比较长的话,页面还是会崩溃掉,没办法只好设置neginx的响应时长了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值