<< Click to Display Table of Contents >> 报告执行过程复制链接 |
1.概述
1.1 应用场景
在数据分析与报告生成的场景中,当报告包含大量组件且加载速度成为瓶颈时,了解各组件的具体耗时情况变得尤为重要。通过使用“报告执行过程”功能,用户可以对比分析各组件的执行时间,从而识别出性能瓶颈,优化报告加载速度,提升用户体验。该功能特别适用于那些包含复杂数据集、多视图及大量交互组件的大型报告。
假设你正在处理一个包含多个图表、数据表和交互按钮的大型财务报告。报告加载缓慢,影响了用户的使用体验。通过使用“报告执行过程”功能,你可以快速定位到哪些组件的加载时间最长,进而针对这些组件进行优化。
1.2 功能简介
“报告执行过程”功能提供了一种动态分析当前报告下组件执行时间的方法。通过这一功能,用户可以定量分析报告的执行情况,包括组件的加载时间、请求的处理时间等关键性能指标。这些信息对于性能调优、问题排查及报告优化至关重要。
2.功能说明
2.1 功能入口
制作报告时,用户可以点击报表菜单栏的【性能 > 报告执行过程】查看执行情况。
查看报告时也可以查看报告执行过程,您可点击报告顶部【查看 > 操作模式】,在“操作模式”弹窗中将“性能”配置为查看的操作、分析的操作、编辑的操作,默认未配置。如下图,如果不配置的话,查看报告时性能菜单项不可见。
查看报告时,点击顶部菜单栏的【性能 > 报告执行过程】,可以在新窗口查看性能执行过程,如下图:
2.2 数据样例
2.3 报告说明
分为PC端和移动端,分别展示不同端的执行数据,统计内容包括“首屏加载时长”“组件加载时长排名”、“报表加载时长统计”。
【首屏加载时长】报告首屏内容的加载时间。
【组件加载时长TOP N】可以自定义输入N值,显示筛选出加载时长排名前N的组件;
【总时间】可以拖动时间范围滑块,筛选出指定时间范围的组件;
【刷新数据】查看一个报告的动态性能分析报告时,这个报告可能还未执行完毕,所以下方的图表上只展示了一部分数据,点击“刷新数据”按钮可以获取最新数据。
点击“组件加载时长排名”里面的标记,可以联动下面的表格,聚焦分析某一个组件。
具体效果如下图:
2.4 主要请求说明
OpenDBReq:打开报告。
OpenCacheDBReq:打开报告(前台有缓存)。
OpenDBReq2:返回组件。
URLLoadDBReq:URL请求页面。
LoadContextReq:准备运行环境所需的变量。
FixDBScaleReq:报表自适应。
SubscribeReq:获取订阅状态。
UpdateElemReq:返回组件数据给前台渲染。
UpdateImage:返回图片给前台渲染。
GetConn:获取数据库连接。
ExecuteSQL:执行SQL。
ExecuteGQuery:数据库或集市执行数据,包含GetConn和ExecuteSQL。
ExecuteAQuery:内存执行数据,如执行动态计算,执行汇总过滤等。
ExecuteData:执行数据,包含ExecuteGQuery和ExecuteAQuery。
ExecuteView:执行视图,如应用格式,合并单元格,高亮等。
PageCountReq:请求表格页数。
LoadGridCountReq:请求表格行数。
FirstPageOver:报告首屏打开完成。
2.5 报表加载时长统计说明
表格数据说明如下:
【报告名称】打开的报告名称。
【组件名称】报告中包含的组件名称,如果为空,则表示报告本身执行需要的操作。
【数据集名称】组件所使用的数据集。
【请求类型】打开报告所执行的请求。详细请求类型以及对应的说明如下,
请求类型 |
说明 |
URL请求页面 |
记录通过URL打开报告时前台发到后台准备开始处理的时间,以及对URL携带的各种参数处理的耗时,这个步骤会对URL上携带的各种参数进行处理和验证并返回html页面给前台。 |
打开报告 |
当前台没有报告缓存时出现该请求。记录对报告进行初始化的耗时,例如设置报告大小、背景、工具栏按钮等。 |
获取订阅状态 |
记录获取报告订阅状态的耗时。 |
批注请求 |
记录获取报告上未读批注的耗时。 |
获取数据库连接 |
当没有可复用的SQL连接,重新创建时出现。记录创建数据库连接的时间。 |
执行SQL |
当组件绑定的数据集需要执行SQL获取数据时出现。记录通过SQL从数据库查询出数据的耗时,记录的耗时包含获取数据库连接。 |
数据库或集市执行数据 |
将组件绑定的各种列、排序、过滤等设置生成查询,例如可执行的SQL语句,向数据集请求数据,记录的耗时包括获取数据库连接、执行SQL。 |
内存执行数据 |
在内存中计算从数据库中获取的数据,例如动态计算、聚合、排序等,记录的耗时包含获取数据库连接、执行SQL、数据库或集市执行数据。 |
执行数据 |
组件执行基础数据的全过程,处理组件上绑定的各种列,例如隐藏没有权限的列,将参数列转换为真实数据列等,记录的耗时包含获取数据库连接、执行SQL、数据库或集市执行数据、内存执行数据。 |
执行视图 |
记录处理组件渲染数据的耗时,渲染数据包含格式、高亮等信息。 |
【执行时间(ms)】对应请求类型在后台的执行时间。
【传输时间(ms)】前台发到后台准备开始处理的时间。
【总时间(ms)】执行时间+传输时间。
报告执行过程存储的数据集为perfCheckForEditDashboad,当在报告中运行报告执行过程后,生成数据。表结构如下:
列名 |
类型 |
描述 |
ID |
整数 |
数据序号 |
DBID |
字符串 |
报告执行ID |
REFNAME |
字符串 |
报告路径 |
DBNAME |
字符串 |
报告名称 |
TRIGGERREQ |
字符串 |
触发的请求名称,像执行数据、执行视图等是被Client发的哪个Request触发的 |
REQ |
字符串 |
请求名称 |
ISTRIGGERED |
布尔 |
是否是主动触发的请求 |
SID |
字符串 |
组件名称 |
QUERYNAME |
字符串 |
数据集名称 |
COMMENT |
字符串 |
当前sql query超过2秒的会记录sql |
CREATETIME |
长整数 |
发出请求的时间 |
RECEIVETIME |
长整数 |
后台接收到请求的时间 |
OVERTIME |
长整数 |
后台处理完成的时间 |
NETCOST |
长整数 |
前台发到后台开始处理时间,单位ms |
PROCOST |
长整数 |
后台处理时间,单位ms |
HOST |
字符串 |
请求IP |
USERNAME |
字符串 |
用户名 |
ALIAS |
字符串 |
用户昵称 |
Type |
字节 |
终端设备类型,0是PC,1是移动端 |
getTableID |
字符串 |
数据库表的主键 |
首屏加载时间同时会单独存储一份数据在perfCheck_FirstPage数据集中,当在报告中运行报告执行过程后,生成数据。表结构同上。
上面讲到,在制作报告中,点击性能帮助->报告执行过程,可以记录报告执行过程数据。在查看报告中,点击性能,也可以记录执行过程数据。
例如:http://ip:port/bi/Viewer?proc=1&action=viewer&hback=true&db=A.db&saveDynamicPerfCheck=true
ip:服务器的ip地址。
port:端口号。
saveDynamicPerfCheck=true:用于在打开指定的报告时记录此报告的执行过程数据。
以上三种方式都可以在定制数据集perfCheckForEditDashboad和perfCheck_FirstPage中查看到记录的数据。
2.8 报告执行过程数据落库表
报告的执行过程在每次打开报告时都会将此报告的执行过程数据落表,存到监控数据库的库表DBPERFORMANCE中。默认存储超过10s请求的数据,通过配置audit.performance.record.limit=10000 调整。