1. 概述
大数据量模板排查思路如下图所示:
注1:图片上不同情况对应的解决方案请参见本文 2.2 节表格内容。
注2:图片上数仓为解决方案之一,为用户提供一个思路,具体介绍请自行百度;FineReport 官方文档只介绍产品相关内容。
2. 排查节点
2.1 区分取数慢还是模板加载慢
将大数据模板 导出内置数据集 再预览,排除 SQL 取数这部分耗时,验证模板本身计算和加载的耗时是否长。
注意导出时使用的参数和预览保持一致,因为参数常常会有显示值/实际值,或者某些系统参数的情况,推荐在参数面板做一组获取控件值的文本控件。
1)如果导出内置数据集的过程很快,则可以确认是模板设计问题,一般此类内置数据模板预览也会比较慢,此时往模板计算慢上定位。
注:参数注入导致的性能问题,导出、预览都可能比较快,此时同样关注模板计算慢。
2)如果导出内置数据集的过程慢,预览很快的话则确认是取数的问题,往 SQL 上定位。
3)对于导出内置数据集的过程慢,预览也慢的情况则要视情况分析,有可能出现模板设计与取数都有问题的情况,也可能只是数据量大,此时最好把两方面都做排查。
2.2 细分使用场景
若定位到是取数导致的整体性能慢,需要判断模板是以导出用法为主,还是预览用法为主。
若定位到是模板计算慢,则需要思考是否必须要用实时数据。
针对不同的场景可以参考下表。
问题痛点 | 应用场景 | 解决方案 | 备注 |
---|---|---|---|
取数慢-导出 | 数据集直接导出 Excel | 大数据集导出Excel插件 | 应对需要直接导出数据集数据的场景,通常对应数据集量会比较大,且一般对应数据集不会在 body 里被用到,用到了一般也不会明细展示。最极端的情况是模板只加载到参数面板而不需要预览 body ,直接在参数面板实现数据集的导出 |
预览后导出 body 内容 | Excel 流式导出支持行式引擎插件 | - | |
后台导出 | 后台批量导出Excel | 会将文件导出到服务器,适用于客户不需要直接预览场景 | |
定时调度导出 Excel | 定时调度 | 适用每日定时导出日报数据等,且通过邮件接收导出的 Excel 的场景,一般是需要预览模板内容的场景 | |
取数慢-预览 | 通过参数、配置等限制数据,且客户接受对应限制的场景 | 1)通过限定参数非空,需要用户自己优化 SQL ,SQL 限定取出数量等方法 2)建议通过 模板限制 ,限制模板的单元格个数、sql 执行时长,单数据集行数等 | - |
分页预览,数据源数据量大 | 每类方法有特定的适用库范围,不支持的库不支持本方法 | ||
优化低实时性报表中,取数性能较差的场景 | 抽数缓存插件使用步骤 | ||
计算慢-数据非实时 | 优化低实时性报表中,取数性能较差的场景 | 抽数缓存插件使用步骤 | - |
每天定时邮件查看数据、及导出无即时性要求的场景 | 定时调度 | 定时调度-结果链接 为实时计算 | |
计算慢-数据实时 | - | 大数据量模板优化思路 | - |