检测性能

<< Click to Display Table of Contents >>

当前位置:  设计可视化分析报告 > 报告操作与设置 > 性能帮助 

检测性能

复制链接

1.概述

1.1 应用场景

“检测性能”功能主要适用于数据分析师和报告制作者在制作复杂报告时,帮助识别并优化报告中可能影响性能的因素。该功能能够辅助用户完成以下任务:

提升报告生成效率:自动检测报告生成过程中的性能瓶颈,如大数据量处理、复杂SQL查询等。

优化报告设计:通过提供具体的性能检测原因和改进建议,帮助用户优化报告结构和查询逻辑。

避免系统资源过载:及时发现并调整可能导致系统资源过度消耗的配置,保证系统稳定运行。

1.2 功能简介

“检测性能”功能是专为报告制作和性能优化设计的工具。在用户制作报告时,系统会自动对报表性能进行静态检测,识别并报告可能影响报告展示效率和系统稳定性的因素。系统提供详细的检测报告和建议,帮助用户快速定位问题并做出相应调整。

2.功能说明

2.1 使用说明

1)功能入口:当报告存在性能问题时,报告菜单栏上的“性能帮助”上会出现小红点提醒,用户可以点击【性能帮助>检测性能】查看性能分类、规范标准和检测详情,并可以点击“检测性能”中的“下载”将所有性能慢的原因以Excel格式导出,如下图所示:

make_visual_dashboard_performancehelp_detect2_zoom70

2)根据检测原因,按情况调整,例如第一步中的提交可以调整为“批量提交”,当用户将检测性能中列出的所有问题按给出的建议全部解决后,红点就会消失。

说明:

报告性能检测只在用户制作报告时提示,在预览报告时不会提示。

2.2相关参数配置

性能检测频率

报表性能检测频率可以通过【系统设置 > 系统参数配置 > 基本参数配置】中的 db.performance.test.interval 属性配置,如下图所示:

make_visual_dashboard_performancehelp_detect3_zoom66

默认值为60s,即每分钟检测一次。用户可以根据实际需要调整该值,以平衡系统性能和资源消耗。

说明:

首次打开报告或者同时打开多个报告后切换选中报告会对报告性能立即进行检测,其它操作会按属性值进行检测。

保存报告性能检测提示

保存报告时是否弹出检测性能提示可以通过【系统设置>系统参数配置>基本参数配置】中的db.save.performance.detail属性配置,如下图所示:

make_visual_dashboard_performancehelp_detect5_zoom69

默认值为true,表示在保存报告时会弹出提示框列出性能问题。用户可根据需要设置为false,以避免在保存时弹出提示框。这样可以在不影响用户操作体验的情况下,灵活控制性能检测结果的展示方式。

用户制作完报告后,点击“保存”或“另存为”,弹出提示框如下图,

make_visual_dashboard_performancehelp_detect4_zoom54

点击“继续保存”,报告保存成功;点击“取消”或“关闭”,用户可以继续制作报告。

查看案例功能

在需要的检测项后可以增加案例,点击查看案例,可以打开一个案例报告,如下图。

view_case_zoom57

需要新增一个perfhelp.properties文件,将此文件放到安装路径中的bihome文件夹下。文件内容为检测项的key等于对应的案例地址,例如:db.perf.flowquery.reason=http://localhost:8080/bi/Viewer,db.perf.flowquery.reason为检测项的key,http://localhost:8080/bi/Viewer为指定的url。

所有检测项key如下面表格。

检测内容

配置key

数据集上设置了不能下推的过滤条件

db.perf.query.reason

设置筛选组件的最大行数超过规定数量

db.static.performance.check.1

过滤组件和参数组件筛选了全部数据

db.static.performance.check.2

使用了没有下推到数据库的计算列

db.static.performance.check.3.3

组件中使用了不能下推的过滤条件

db.static.performance.check.4

组件绑定的分组字段超过规定数量

db.static.performance.check.5

自由表绑定数据集的个数超过规定数量

db.static.performance.check.6

过滤组件和参数组件加上默认值,不建议筛选全部数据。

db.static.performance.check.2

使用了多个参数组件和过滤组件过滤时,未设置批量提交

db.static.performance.check.22

明细表格没有设置分页

db.static.performance.check.23

设置自由式表格或自由式表格填报组件的最大行数超过规定数量

db.static.performance.check.24

设置参数可选值的最大行数超过规定数量

db.static.performance.check.25

设置组件加载的最大行数超过规定数量

db.static.performance.check.26

全局设置导出CSV的数据行数超过规定数量

db.static.performance.check.29

自服务数据集的嵌套层数超过规定数量

db.perf.query.reason.302

自服务数据集中的透视节点转换列超过规定数量

db.perf.query.reason.303.1

自服务数据集依赖的数据集中的透视节点转换列超过规定数量

db.perf.query.reason.303.2

自服务数据集逆透视表下发SQL脚本中union的个数超过规定数量

db.perf.query.reason.305.1

自服务依赖的数据集逆透视表下发SQL脚本中union的个数超过规定数量

db.perf.query.reason.305.2

筛选字段使用的数据集中包含了透视表、逆透视表节点

db.static.performance.check.307

自服务数据集使用的节点个数超过规定数量

db.perf.query.reason.308

筛选组件绑定了自服务数据集

db.static.performance.check.310

自由式表格使用单元格数量超过规定数量

db.static.performance.check.311

自由式表格绑定分组列和细节列的单元格数量超过规定数量

db.static.performance.check.312

自由式表格使用单元格过滤的单元格数量超过规定数量

db.static.performance.check.313

报告使用页签数超过规定数量

db.static.performance.check.314

报告使用图表(图表(不包括仪表盘),表格,交叉表,自由表)组件的数量超过规定数量

db.static.performance.check.315

报告使用组件数超过规定数量

db.static.performance.check.316

报告使用下拉列表组件、下拉参数组件、下拉列表过滤组件的个数超过规定数量

db.static.performance.check.317

数据集中字段使用了不能下推到数据库的字段

post.perf.error

设置图表轴标签的最大个数超过规定数量

db.check.chart.axis.label.max.count

自服务数据集有不能下推的节点

db.perf.flowquery.reason

报告中使用了不能下推到数据库的字段

sth.not.push.sql

使用了不能下推到数据库的计算列

script.perf.error

交叉表的最大行数超过规定数量

db.check.pivot.max.row.msg

3.性能检测问题及解决办法

“检测性能”功能会根据不同的原因将性能问题分为系统原因、报表原因和数据集原因三大类,并给出相应的解决方案。

系统原因

当用户将一些数据量相关的属性值修改的超过默认值后,可能会引起产品计算的压力太大,对此我们会进行提示并收集到系统原因中。

1)过滤组件或参数组件的最大行数限制

设置的过滤组件或参数组件的最大行数list.qry.maxrow超过了默认值10000,会弹出提示,如下图所示:

make_visual_dashboard_performancehelp_detect6

用户点击“确定”强制修改该值后,如果报告里存在过滤组件或参数组件时,系统原因会收集并提示此信息,如下图所示:

make_visual_dashboard_performancehelp_detect7_zoom44

解决方法:在系统设置>系统参数配置>数据量参数配置中修改list.qry.maxrow参数值。

2)自由式表格或自由式填报表格的大小限制

设置的freestyle.max.size超过了默认值500000。

如果报告中存在自由式表格或自由式填报表格,会将性能检测信息收集到系统原因中。

解决方法:一些使用自由式表格的格间计算场景,实际上通过计算列一样可以计算出来,可以考虑改为计算列后再绑定;您也可以修改bi.properties里freestyle.max.size默认值,但默认值太大可能会增大报表负荷,造成卡顿。

3)参数可选值的最大行数限制

设置的参数可选值browseParamlist.maxrow的最大行数超过默认值5000。

如果报告中存在弹出参数,且可选值来自于数据集,会将性能检测信息收集到系统原因中。

解决方法:可以到系统设置>系统参数配置>数据量参数配置中修改browseParamlist.maxrow参数值,可选参数值不宜太大,否则可能会造成卡顿。

4)数据加载行数限制

设置的组件的加载数据行数max.load.rows超过了默认值5000000。

如果报告中存在表格,交叉表,自由式表格、图表,且绑定了数据,会将性能检测信息收集到系统原因中。

解决方法:可以到【系统设置 > 系统参数配置 >数据量参数配置】中修改max.load.rows参数值,不能超过上限1000000000。

5)CSV导出行数限制

如果设置的导出csv的行数csv.max.row超过了限制5000000。

如果报告中存在表格,交叉表,自由式表格、图表,且绑定了数据,会将性能检测信息收集到系统原因中。

解决方法:可以到bi.properties中修改csv.max.rows参数值并重启。

6)交叉表组件行数限制

如果设置的交叉表的行数pivot.max.row超过了默认值500000

如果报告中存在交叉表组件或自由式表格组件,且绑定了数据,会将性能检测信息收集到系统原因中。

解决方法:可以到bi.properties中修改pivot.max.row参数值并重启。

7)图表组件轴标签数量限制

设置的轴标签的最大个数chart.axis.label.max.count超过了限制5000

如果报告中存在图表组件,且绑定了数据,会将性能检测信息收集到系统原因中。

解决方法:可以到bi.properties中修改chart.axis.label.max.count参数值并重启。

报告原因

用户在制作报告新增的计算列如果不能下推到数据库执行,会显示为橙色标识,且鼠标悬浮在该列上有性能检测提示,如下图所示:

make_visual_dashboard_performancehelp_detect8

当报告有以下几种情况时,会收集到报告原因中:

1)组件上使用的SQL数据集中,列不能下推到数据库执行,或组件的过滤中设置的过滤条件不能下推到数据库执行

提示如下图所示:

make_visual_dashboard_performancehelp_detect9_zoom42

解决方法:在制作报告前,可以先对数据集进行过滤,只留下有效的数据,减少内存负荷。

2)过滤组件或者参数组件没有勾选默认值且空选项策略设置为全部数据,或者在组件上选择了“全部”数据,即一次性把所有的数据都展示出来

提示如下图所示:

make_visual_dashboard_performancehelp_detect10_zoom47

解决方法:给过滤组件、参数组件设置默认值,让图表组件展示少部分数据或者空数据。

3)组件上使用的SQL数据集中,列为逻辑判断类型的细节表达式(表达式中有if语句)

提示如下图所示:

make_visual_dashboard_performancehelp_detect11_zoom41

解决方法:可以用过滤列代替计算列。

4)组件中维度绑定的个数超过10个(受属性bind.dim.recommend.num控制,默认为10),提示如下图所示:

make_visual_dashboard_performancehelp_detect12_zoom42

解决方法:将与分析无关的数据字段从绑定区域移除,建议绑定的维度不超过10个。

5)报告中有多个筛选组件并且未设置批量提交时

提示如下图所示:

make_visual_dashboard_performancehelp_detect13_zoom48

解决方法:在报告中添加批量提交按钮,勾选全部过滤条件后批量提交再执行筛选,提高执行效率。

6)对于已经支持了分页的数据库,在制作明细表时没有使用分页

提示如下图所示:

make_visual_dashboard_performancehelp_detect14_zoom42

解决方法:在组件设置里面勾选“分页”,每页展示适量的数据行数,减少内存消耗。

7)自由式表中单元格数量超过200(受属性freestyle.cells.limit控制,默认为200)个,提示如下图所示:

make_visual_dashboard_performancehelp_detect17_zoom47

8)筛选组件使用的数据集如果包含透视表或逆透视表节点,提示如下图所示:

make_visual_dashboard_performancehelp_detect18_zoom48

9)使用自服务数据集作为筛选器,提示如下图所示:

make_visual_dashboard_performancehelp_detect19_zoom48

解决方法:建议使用查询维度表的数据集作为筛选器。

10)自由表绑定分组列和细节列的数量超过10(受属性freestyle.group.cells.limit控制,默认值为10)个,提示如下图所示:

make_visual_dashboard_performancehelp_detect20_zoom48

11)自由表单元格使用单元格过滤的数量超过10(受属性freestyle.cell.filter.limit控制,默认值为10)个,提示如下图所示:

make_visual_dashboard_performancehelp_detect21_zoom43

12)报告使用的标签页个数超过6(受属性db.tabs.limit控制,默认值为6)个,提示如下图所示:

make_visual_dashboard_performancehelp_detect22_zoom44

解决方法:建议使用超链接引入其他报告。

13)报告使用复杂组件的数量超过20个(受属性db.data.components.limit控制,默认值为20),复杂组件包括图表(不包括仪表)、表格、交叉表和自由表,提示如下图所示:

make_visual_dashboard_performancehelp_detect23_zoom44

解决方法:建议使用超链接方式引入。        

14)单报告控制使用组件的数量超过100(受属性db.all.components.limit,默认值为100)个,复杂组件为图表(不包括仪表),表格,交叉表,自由表,提示如下图所示:

make_visual_dashboard_performancehelp_detect24_zoom44

解决方法:建议使用超链接方式引入。

15)使用下拉列表组件、下拉参数组件和下拉列表过滤组件超过6(受属性list.filter.components.limit控制,默认值为6)个。

make_visual_dashboard_performancehelp_detect25_zoom45

解决方法:推荐用户使用搜索组件替代参数组件。

数据集原因

1)当报告组件依赖的数据集(SQL数据集/自服务数据集/组合数据集)中有不能下推到数据库执行的列/操作,或者SQL数据集的过滤中的过滤条件不能下推到数据库执行时,会将此信息收集到数据集原因中,提示如下图所示:

make_visual_dashboard_performancehelp_detect15_zoom43

解决方法:Mongo计算列尽量使用管道命令,数据集在进行关联计算之前先过滤出有效的数据,可以降低需要进行联接的数据量,提高性能,减少不必要的字段进行计算等。

2)在数据集和报告的静态性能检测中,对mpp执行做检测。执行计划中行数超过一定数量。

提示如下图所示:

make_visual_dashboard_performancehelp_detect15_zoom44

解决方法:该限制受dc.perf.query.maxrow参数控制,默认为10000000。

3)两个入集市的数据集做了联合查询时判断是否满足map-side join,不满足则进行性能提示。

提示如下图所示:

make_visual_dashboard_performancehelp_detect16_zoom44

解决方法:抽取数据时勾选分片列再入集市。

4)自服务数据集的嵌套层数超过2(受flow.query.nested.layers属性控制,默认值为2)层,提示如下图所示:

make_visual_dashboard_performancehelp_detect26_zoom43

5)自服务数据集逆透视表下发SQL脚本中union个数超过10(受flow.query.unpivot.union属性控制,默认值为10)个,提示如下图所示:

make_visual_dashboard_performancehelp_detect28_zoom43

6)自服务数据集使用透视节点新增超过100(受flow.query.pivot.add.cols属性控制,默认值为100)列,提示如下图所示:

make_visual_dashboard_performancehelp_detect27_zoom43

7)自服务数据集中的节点个大于15(受flow.query.nodes.limit属性控制,默认值为15),提示如下图所示:

make_visual_dashboard_performancehelp_detect29_zoom49

4.通过定制数据集获取性能检测数据

1)当保存或另存为报告时,会触发生成性能检测的数据,并可以在定制数据集staticPerfCheckForEditDashboad查看到生成的数据。

2)用户也可以可通过url生成指定报告的静态性能检测的数据。

例如:http://ip:port/bi/Viewer?proc=1&action=viewer&hback=true&db=A.db&platform=PC&browserType=chrome&perfDBID=***或perfDBPath=***

ip:服务器的ip地址。

port:端口号。

db:比如A.db,绑定了定制数据集staticPerfCheckForEditDashboad,用户查看静态性能检测数据

perfDBID:需要生成静态性能检测数据的报告的refID,也就是资源id,可以通过获取报告基本信息的接口getDBInfo获取到指定报告的refID

perfDBPath:需要生成静态性能检测数据的报告的完整路径。

性能检测数据除了本章节里提到的性能检测项以外,也包括其它检测项里的所有内容。其它检测项里记录的内容,不会弹出到检测性能弹窗里。也就是数据集里可以查看到更多的性能检测数据,只有部分会在保存和另存为报告或点击性能帮助->检测性能时,如果不满足性能检测规范,则弹出到产品界面。

staticPerfCheckForEditDashboad表结构如下

列名

类型

描述

ID

整数

数据序号

DBPATH

字符串

报告路径

DBID

字符串

报告执行ID

TYPE

字符串

性能检测类型

STANDARD

字符串

标准规范

PERFDETAIL

字符串

性能检测出来的内容

ITEM

字符串

检测对象

NUM

整数

数量

TYPE_Locale

字符串

性能检测类型local

STANDARD_Locale

字符串

标准规范local

PERFDETAIL_Locale

字符串

性能检测出来的内容local

ITEM_Locale

字符串

检测对象local

5.性能检测数据落库表

在调动任务中可以新建自定义任务,将报告的静态性能检测数据存入到DBSTATICPERFORMANCE表中。

make_visual_dashboard_performancehelp_detect30_zoom44

自定义任务:g5.sched.jobs.PerformanceCheckToDBTask

DBPATH:指定需要做性能检测的报表目录,可以写多个目录用英文,分割。如果已经存在性能检测报告的数据,则进行更新。可以为空。

DBLASTMODIFIED:指定上次修改时间,选择或输入yyyy-MM-dd格式的数据,比如2025-03-12,则对大于等于(2025-03-12 00:00:00)修改时间的报表进行数据更新,可以为空。

DBSTATICPERFORMANCE表结构如下

列名

类型

描述

DBPATH

字符串

报告路径

DBNAME

字符串

报告名称

DBID

字符串

报告执行ID

TYPEKEY

字符串

性能检测项类型key

TYPE

字符串

性能检测项类型

STANDARDKEY

字符串

标准规范的key

STANDARD

字符串

标准规范

PERFKEY

字符串

性能检测出来的内容对应的key

PERFDETAIL

字符串

性能检测出来的内容

ITEMKEY

字符串

检测对象key

ITEM

字符串

检测对象

DBUPDATEUSER

字符串

报告最后一次更新人

DBCREATEUSER

字符串

报告创建人

TABLEID

字符串

表的主键

NUM

整数

检测出来的数量

DETESTIONTIME

长整数

检测时间

DBUPDATETIME

长整数

报告最后一次更新时间

DBCREATETIME

长整数

报告创建时间