如果后续遇到新的性能问题,有新的技巧和具体解决方法的,建议提炼后更新维护到此文档中,以便给实施做表人员更多参考。
分主题建模(含数据库、SQL)、分析表常识与技巧、特殊设置
- 【JVM参数设置】jvm启动参数,设置合理的-Xmx -Xms等参数;
- 【参数设置】分析库在数据源中,设置合理的最大活动连接数等参数,以充分利用数据库服务器查询性能;
- 【参数设置】系统库在配置工作目录中的jdbc.conf时,设置合理的最大活动连接数等参数,以充分利用数据库服务器查询性能;
- 【参数设置】在系统管理-系统设置-性能与维护-线程池-线程池设置中,设置合理的最大线程数和计算分析表数目;
- 【参数设置】导出时,根据内存情况,设置合理的导出参数:/root/products/ebi/sys/conf/exportprintlimits.conf,避免消耗过大内存而导致服务器可用资源过少;
- 【主题建模】支持星型模型,多表关联时,优先采用一致性维度,优先过滤分组后进行多表关联、优先采用主源表字段转换为同表字段查询;(已自动固定开启此优化)
- 【主题建模】主题建模优化,根据数仓理论,采用合理的模型,对主题进行合理的划分,规划好维度和指标;(需要根据需求场景进行合理规划主题建模,尤其是主题多、场景多时)
- 【SQL运算VS内存运算】对于数据库很强,中间件相对较差的情况,尽量多采用并行计算,发起并发查询,充分利用数据库性能;(结合现场环境软硬件输入要素决定)
- 【数据库表设计】数据库表进行合理的分区、索引,以加快常用过滤字段、分组字段、排序字段的查询效率;
- 【特殊设置-列元信息】对于非i@Report物理表,且BTYPE_字段无特殊业务含义的场景,加上@bbhtype=1报表参数,以减少获取各数据库表列元信息耗时;
- 【特殊设置-列元信息】对于字符串型日期字段作为数据期字段过滤的场景,参考wiki:计算时获取主题表字符串日期字段格式优化使用说明文档;
- 【SQL查询优化】分析计算详情日志,针对SQL调优、经过SQL调优,采用SQL数据源;
- 【简化】减少嵌套和交叉层次,尽量采用平级的结构(变通用钻取等方式去看其他层级、切片数据);
- 【简化】如无必要,尽量减少分页数、列数、表格规模,减少单页内页面元素个数;
- 【简化】尽量只进行单表查询(同源),并设置管理合理的索引;
- 【简化】保持分析表页面结构简洁明了,进行合理的功能区划分拆分和分析需求划分拆分;
- 【简化】通过建模、制作分析表过程,减少表关联,减少子Olap、子SQL(子查询)。
- 【缓存】设置并使用多级缓存、高效外部缓存,借用高效的外部资源分摊减轻中间件、数据库压力。(TODO:需要根据特定场景按需要添加,目前没有额外借用外部高效缓存,目前计算过程也没有拆分出多级缓存)
- 【做表】固定维优化-不勾选禁止内存计算,针对大量固定维用相同主题表、相似过滤条件字段场景。
- 【做表】临时表优化,针对TODO场景。
- 【做表】优先使用本表字段优化。(代码已自动固定开启,有一定副作用,与6相关)
- 【做表】本地维优化。(代码已自动固定开启,有一定副作用,与6相关)
- 【做表】一致性维度。(代码已自动固定开启,有一定副作用,与6相关)
- 【做表】先分组后连接,勾选了“指标”且设置有特殊过滤条件、连接方式的表元、指标。
- 【做表】不勾选“指标”,减少非必要子查询。
- 【导出】导出时计算优化,去掉不必要的过程。(代码已做了大部分处理)
- 【导出】相同参数短时间内高并发导出优化。(已自动固定开启此优化)
请先登录