数据库技术学习 https://www.itkc8.com
针对数据量巨大的报表查询,总结了一下几个处理方法: 看一个运用案例:多粒度(年月日,省、地市、热点、ac、ap)下每天20W条,每月800W条,自由选择35天内数据的查询。 直接查询页面崩溃,运用了以下几点,基本上能保证在1-2分钟(100秒左右)内页面相应加载。一:表分区 当某张表每天都有上十万,百万的数据量时,考虑每天创建一个分区来存储每天的数据。二:粒度汇聚 报表查询中遇到多粒度分组查询的,事先将粒度数据单独汇聚成表,按粒度查询。三:索引创建 给关键使用的几个字段创建索引,注意不能使用like对索引字段操作,索引字段也不能使用运算符,否则创建的索引不生效。四:分页加载 由于查找的数据量大,一定要用分页加载的方式给页面返回数据。需要注意的是分页的返回条数也不要设置的太小,不然数据页数处理增加也会影响sql速度。比如每页30条数据,在数据量为20W的情况下,比每页15条就快不少。另外注意的是,分页其实分两部分,一部分是count(*),另一部分就是查找返回30条。五:并行度( ) 当数据量过大时还可以考虑打开数据库的并行度,这样用资源空间换取时间。 创建oracle多线程: select nick,id from seller t 其中64 代表线程数,这个数最好与linux版本位数一致。六:加大neginx相应时间 通过以上5个步骤如果页面相应时间还是比较长的话,页面还是会崩溃掉,没办法只好设置neginx的响应时长了。