2021-03-16 11:54:07
BI速度慢?试试亿信ABI的性能调优工具
BI(商业智能)工具的报表处理速度对于数据分析服务的正常运行至关重要。当面临BI速度慢的问题时,可以尝试使用亿信ABI这一专业工具,并通过其性能调优功能来显著提升报表处理速度。以下是从SQL个数和过滤条件两个方面分享的亿信ABI性能调优小诀窍。
一、并行计算
在数据表格统计分析中,当一张报表中有多个分析报表时,系统需要生成多条SQL语句来完成数据查询结果。SQL数量的增多会影响数据分析的查询效率。为了解决这个问题,亿信ABI优化了“并行计算”的功能。
并行计算原理:并行计算是将多个查询SQL并行执行,以提升多表格的计算效率。通过并行计算,可以最大化地利用系统资源,使报表计算速度产生质的飞跃。
测试场景对比:
测试场景一:数据库与产品共用同一台PC机资源(双核四线程,8G内存,mysql5.0数据库,物理表数据量48814条记录)。在开启并行计算后,报表计算速度显著提升。

测试场景二:同样条件下,物理表数据量增加到100W。在开启并行计算后,报表计算速度依然保持高效。

设置方式:亿信ABI会自动进行多表格的并行计算,无需任何设置。如果由于某种原因需要关闭并行计算,可以在“资源管理器”下的目录/root/products/eanalysemgr/conf/setup.conf中配置属性值@set_calc_threadmode值为none。
二、优化过滤条件,善用索引
过滤条件在报表计算时会转换成SQL语句中的where条件。在大数据量的情况下,where条件不够优化会直接导致SQL语句运行效率低下。因此,优化过滤条件是提高BI速度的关键之一。
杜绝在指标列上使用函数:如果在where条件中的列上使用了函数,就不会使用该列上建立的索引。例如,在Oracle数据库中,如果主题表ESEN_BI的列pid上有索引,原过滤条件写法为left(ESEN_BI.pid,1)>='1' and left(ESEN_BI.pid,1)<='3',由于使用了left函数并且是不等运算符,因此无法直接优化为like操作,只能将left转换为sql中的substr函数,从而破坏了走索引的可能性。优化后的写法为(ESEN_BI.pid like '1%' or ESEN_BI.pid like '2%' or ESEN_BI.pid like '3%'),这样可以走索引,显著提高查询速度。

优化过滤表达式:养成良好的过滤条件编写习惯,在理解业务过滤需求的基础上,尽可能用简洁实用的表达式来编写。编写过滤条件时,可以使用以下小技巧:
能用like不用substr(取子串);
能用and尽量不要用or;
尽量不要用not in、in,有条件的情况下可以用范围过滤来代替(>,<)。
索引相关建议:
在索引列上使用函数时不会使用索引,如果一定要使用索引,建议建立函数索引;
索引列中有NULL值时,数据库查询不会走索引;
如果需要排序时,尽量根据已建立索引的列排序;
如果发现过滤条件和排序所需要的列没有索引时,可以申请让数据库工程师整体评估具体优化方法;
切忌自行随意增加索引,过多的索引反而会影响性能。
综上所述,通过并行计算和优化过滤条件这两个方面的性能调优措施,可以显著提升BI工具的报表处理速度。亿信ABI作为专业的BI工具,提供了强大的性能调优功能,能够帮助用户轻松解决BI速度慢的问题。