大数据量的报表如何快速分页呈现,有什么好的处理方法
在说明这个问题的处理方法前,先了解下是什么原因导致的大数据量报表呈现慢的问题。
一般不外乎这两种原因:
1 . 数据查询业务,查询条件宽泛,导致数据库查询后的结果集数据条数达到几百上千万甚至过亿;
2 . 采用内存运算机制,即如此庞大的数据量要一次性在内存计算完成,后再进行呈现,用户体验特别不好,这个过程中很可能因为计算量大 出现内存溢出,无法继续计算。
针对这种情况,我们可以采用异步处理的方式,将取数和呈现分为两个线程异步处理,取数线程发出 SQL 后不断取出数据缓存到本地,由呈现线程从本地缓存中获取数据进行显示。这样,已经取出并缓存的数据就能快速呈现,不再有等待感;而取数线程所涉及的 SQL,在数据库中保持同一个事务,也不会有不一致的问题,前面提到的两个问题全部得以完美解决。
同时,借助二进制文件存储格式,报表还可以按行号随机访问记录,而不用每次通过遍历查找数据。也就是说,这种存储格式支持跳转到任意页访问,从而极大地改善了用户体验。不过,由于采用了异步机制,页面端显示的总页数和总记录数会随着取数过程不断变化。
目前润乾报表已经将这种处理机制产品化,只需要一个简单的设置就可以了。
详细设置可参考: