皕杰报表之性能管理
admin
2024-03-07 04:54:21
0

1 报表缓存

当某个客户端访问某个报表,引擎将其计算出来后,会将运算结果缓存下来,之后如果再有别的客户端用相同的参数访问同一个报表,引擎会将缓存下来的报表结果直接返回给该客户端,而不会重新计算报表。

这种缓存方式在大用户并发的情况下可以大大的提高性能,缓解服务器的计算压力。同时,当同一个客户端访问完该报表后,如果需要对同一报表结果进行别的操作,例如打印、导出、翻页等,引擎也直接从缓存里取报表结果,而不必重新计算。

缓存报表的存储有两种方式:一、直接存到硬盘上 二、同时存到内存和硬盘,在内存中处于软引用状态。当内存够用时一直在内存中保持着,引擎需要的时候直接从内存中取,交互速度快,当内存不够时缓存被当成垃圾回收,引擎需要的时候从硬盘上读取。

皕杰报表还支持缓存组,即根据缓存的缓存时间不同,将报表分组缓存。

缓存组的设置方法:点击报表根格,选中报表,在右侧属性的缓存组属性中设置缓存组名称,该名称要与配置文件中节点的name属性保持一致,同时在该标签中可以对缓存中的最大对象数及缓存时间进行设置。可同时设置多个缓存组,即可以有多个节点,但节点的name属性值不能重复。

如果报表没有设置缓存组,则执行默认缓存时间。

2 并发控制

当报表引擎已经没有优化余地时,如果服务器资源依旧吃紧,可以控制应用服务器的并发数。不同的应用服务器,其并发数的控制机理会略有区别,具体的配置方法请参见服务器厂商提供的文档。

3 JVM内存

JVM堆栈内存是决定应用服务器性能的关键指标,由于JAVA的自动垃圾回收机制以及其屏蔽了指针的应用,导致了JAVA程序占用的内存总是比C语言程序占用的内存大,因此JAVA程序最常见的性能问题就是内存溢出, 当内存不够时,可以加大JVM堆栈内存,最大可以加到2G(32位的JVM)

4 按需取数

当报表数据量很大,结果报表格子数也很多的时候,如果报表的运算并不复杂,没有跨行组的运算,可以采用按页取数的办法,该办法可以从根本上缓解大报表的内存压力。

该办法的原理是:每次只取出一页数据进行报表运算,当翻页时取下一页数据进行运算,这样每次内存中只保留一页的数据,大大加快了运算速度,减轻了内存压力。

用户根据数据量的大小可以创建不同的报表类型,当数据量较少,可直接用“普通报表”,若数据量过大,有可能影响运行速度的话,可使用“行式报表”。

5 流式导出

“行式报表”解决了报表在浏览器上展示时的性能问题,但是当“行式报表”导出excel时,依然会遇到性能问题,可以采用把导出格式配置诚xlsx格式的方式来解决这个问题。

该方式的原理是:无论报表是否是“行式报表”,xls格式导出都是采用Java对象方式来操作Excel文件。而导出为xlsx格式则是根据报表类型不同而采用不同的技术手段,当报表为“行式报表”时,采用数据流的方式来操作Excel文件,否则采用Java对象的方式。

采用Java对象方式操作Excel文件,快,但是耗用内存多;采用数据流方式操作Excel文件,慢,但是耗用内存少。

相关内容

热门资讯

郭台铭被曝出轨!千亿富豪,“爱... 75岁的鸿海创始人郭台铭近日再度成为舆论焦点。台湾媒体此前接连报道称,郭台铭近一年与一名谢姓女球友往...
总市值仅4.82亿!*ST萃华... *ST 萃华遭初步查实财务涉嫌虚假记载 面临重大违法强制退市风险8 月 6 日,*ST 萃华发布立案...
大元泵业实控人更迭:原实控人韩... 8 月 5 日,大元泵业(603757)发布公告,受原实际控制人之一韩元再逝世影响,公司实际控制人发...
赵祺握住了豆包的方向盘 璧电ズ... 在字节跳动今年的全员会上,赵祺作为豆包产品总负责人正式进入公众视野。在会上,赵祺表示,大模型的市场潜...
从“一人公司”到“一座新城”:... 青年创业,难在哪?对当今大量独立创业者,也就是流行的OPC(One Person Company)“...
女装越来越透把内裤卷成隐形衣,... 女装里致命性硬伤,成了滋生「粉底液内衣内裤」的温床。作者|卢力麟设计|胖兔内裤正在进入餐饮和彩妆时代...
董平安真的能保董事平安吗? 有... 如果把“董平安”当作A股董事困境的终点,那就是本末倒置了。平安保险在深圳发布董责险专属服务品牌“董平...
交付力即产品力:解码森与天成9... 本文来源:时代周报 作者:宋然“在快节奏的繁忙都市生活中,我们可以在这里找到一片平静。”“朋友做客觉...
英伟达开源340亿参数驾驶模型... 当地时间2026年8月4日,英伟达宣布推出面向自动驾驶汽车与无人出租车的开源推理模型Alpamayo...
中国城市,正在全球抢大学 中国... 一边是海外高校加速进入,一边是国内生源持续收缩,中国大学正在加速分化。这是大学本身的挑战,也同样是未...