
大约4年前,我们将报告系统从Oracle迁移到SAP Hana。 如今,它存储了约10,000张桌子,有38,000人使用它,每天进行的加载过程超过5,000个。 目前,我们的系统(系统在其中运行)由8台服务器和14 TB内存组成。 报告系统每天处理1.5 pb的数据。 同时,Hana的生产率是Oracle,DB2和MySQL的20倍左右。 今天,我想告诉大家,在M.Video和Eldorado集成的框架内,我们如何进一步提高了报告系统的性能,并进行了优化。
负荷
如今,在系统创建的数千个报告中,只有10个报告产生了总负载的70%。 Hana数据库中最重的报告是“每周商务评论”。 它运行30分钟,消耗4 TB的内存。 90%的报告均由联络中心生成:我们创建了一项服务,当客户通过其电话号码致电时,该服务会自动打开报告,并向接线员显示呼叫者购买的全部历史记录以及与公司的互动。
资料模型
大量报告所基于的关键数据模型包含1,500个表。 它们大多数是参考表。 使用此模型,您可以分析公司的任何方向。 一个示例是使用Universe设计器创建的数据模型的可视化。 没错,它只反映了我们系统的十分之一。

性能表现
在M.Video和Eldorado合并时,两个报告系统中的数据量约为10 TB:HANA M.Video系统上的BW为7 TB,HANA Eldorado上的BW为2 TB,1 TB HADOOP中的其他数据(历史数据)。 组合系统时,我们存在硬件限制:M. Video复合系统由6个节点(每个2 TB)组成,包括一个备份。 该系统最多可扩展到8个节点,其中一个备份。
在准备合并时,我们假设所有数据的总量将达到13 TB。 因此,根据SAP的建议,我们需要一个由16个节点组成的系统,每个节点2 TB,其中包括两个备份节点。 同样,必须将一个节点分配为主节点,该主节点将凭借大量信息来接管管理功能。 也就是说,为了正确操作,必须部署13个节点。
如您所见,可用资源绝对不足。 那是第一个挑战。
合并之前的第二个主要困难是系统的速度通常不能满足业务需求。 主要原因是对数据库的大量并发调用。 从系统的角度看,它就像滚雪球一样,可能导致冻结或中断部分进程,甚至导致节点上“内存不足”的全局转储。
很明显,如果不进行重大改进,报告中(两个品牌)的数据量增加两倍,将导致情况恶化约两倍。
因此,我们决定在以下方面优化系统:
- 报告中 加速最关键和最耗费资源的报告并修订数据模型。
- 仓库 。 归档和存储优化。
- 下载 。 简化过程并更改下载时间表。
优化的一般方法是:

首先,我们进行了全方位的分析,确定了问题的原因,然后使用所需的资源分析了系统的功能。 我们还立即尝试使该过程尽可能自动化,以便将来我们可以快速确定问题的原因并快速恢复性能。
我们做了什么:
- 更改了ABAP应用程序服务器的配置:实例数,有效使用NUMA技术以及最佳工作流数。
- 我们应用了HANA和Linux操作系统的最佳参数。
- 我们分析了CPU消耗的减少。
- 我们分析了整个观察时间间隔内的RAM消耗。
- 我们分析了OOM在HANA上的发生。
- 我们分析了系统中锁的发生以及用于等待操作(wait)的系统资源的可用性。
- 我们分析了数据的平衡,并考虑了SCALE-OUT HANA解决方案的数据重新分配和重新分配。
- 我们分析了影响关键链运行的ABAP转储的原因。
基于结果,将汇编性能报告以及说明,以便将来可以独立确定系统瓶颈和高峰时间间隔。
取得了什么成果:




许多优化的报告SAP BO开始工作的
速度提高了许多倍,而消耗
的内存却减少了数百倍 。

以下是一些惊人的示例,说明系统如何错误地满足选择条件,以及如何在HANA中正确构建查询。
当使用非物化对象进行过滤时,尤其是(!)出现了问题(使用
COUNT DISTINCT
指示符时,CD既可以在Universe级别又可以在CV中的函数中写入)。

即使您从查询中排除CD,第一个选项的运行速度仍然比第二个慢20倍,而使用CD时,速度则高出500倍以上。

在过滤器中使用非物化对象的一种特殊情况:两个或多个对象的复合过滤器,例如,粘贴一周和一年:

带有粘滞过滤器的查询的工作速度不如转换为日期慢,但它们仍会减慢查询速度(大约2-3次)。

为了收集有关报告系统运行,加载过程和链的统计信息,我们开发了以下方案:

同时,我们在报告中添加了特殊注释以及报告名称。 因此,我们可以比较系统不同部分的负载并比较周期。

计划
我们有许多开发业务功能的计划和对数据可视化工具的重大修订。 我们正在积极参与的全球趋势是将报告系统集成到数字化转型范式中。
什么意思
当我们的报告系统还很年轻时,用户经常向我们提出类似的要求:“自动构建报告,以显示特定商店或整个公司获得了多少净利润。”
然后,他们开始向我们提出要求,提出一种算法,该算法将根据特定因素构建计划或预测净利润。
今天,我们得出的结论是,用户希望了解净利润的准确预测。 我们拥有开发预测算法所需的所有必要数据,并且有可以创建机器学习模型的数据分析专家。 如您所知,这确实需要大量数据,因此,我们报告系统开发的主要趋势之一就是过渡到基于大数据的分析和模型创建。
关于我们团队的几句话
如今,大公司越来越多地引入基于系统本身开发的机器学习算法的预测系统。 两年前,我们在数字零售数据科学中心的数据分析领域创建了一个能力中心,而今年我们拥有一组数据工程师。 我们正在引入一种用于处理和分析大数据的新系统。 我们需要团队中支持,开发和应用数据分析部门的人员。
如果您对这些领域感兴趣,那么您会感到自己的力量-欢迎光临! 您会发现有趣而困难的工作,有时会感到压力,但总是富有创造力。
