如管理学学者彼得·德鲁克所说:你没法管理你不能衡量的东西( If you can't measure it, you can't manage it)。要对已有程序进行性能优化,首先要对它的运行情况作出量化分析。html
将代码下推到ABAP CDS,是SAP推荐的一种优化方式。但正因逻辑从应用服务器向数据库的转移,传统运行时分析工具SAT也有了力所不能及之处。这时,咱们须要新的工具来对这一新的开发对象的运行状况进行分析。sql
本文将介绍Plan Visualizer(如下简称PlanViz)在ABAP CDS性能分析方面的应用。数据库
本文连接:http://www.javashuo.com/article/p-hcerloku-en.html性能优化
本文会用到一个系统自带的简单示例视图,DEMO_CDS_JOIN。它的代码以下,服务器
@AbapCatalog.sqlViewName: 'DEMO_CDS_JOIN' define view demo_cds_scarr_spfli (id, carrier, flight, departure, destination) as select from spfli join scarr on scarr.carrid = spfli.carrid { key spfli.carrid, key scarr.carrname, key spfli.connid, spfli.cityfrom, spfli.cityto }
打开ST05的SQL跟踪,而后在任何地方(SQL Console, SE16, SE38)执行对视图DEMO_CDS_JOIN的查询,本文使用的是SE16。网络
关闭跟踪,显示结果,以下图,工具
咱们会找到对视图DEMO_CDS_JOIN的查询语句的跟踪记录,选中它,点击菜单栏的Edit->Display Exceution Plan->For Recorded Statement性能
在新页面中点击工具栏中的Execution Trace,将后缀plv的跟踪文件保存在本地,优化
使用HANA Studio或者安装了HANA Tools的Eclipse打开下载好的plv文件,能够看到跟踪的有关信息,其中第一个页面是概览。this
概览中的一些信息的涵义以下,
Execution | 除编译时间外的查询执行时间 |
Dominant Operators | 按执行时间排序(前三位)的算子。这能够帮助你快速找到最耗时的操做。 |
No. of Nodes | 涉及到的服务器数量,若是你有多节点的系统的话 |
Number of network transfer | 发生的网络传输数量(在多节点系统中存在,它是影响性能的关键参数) |
Memory Allocated | 执行语句消耗的总内存 |
Number of table used | 执行过程当中接触到的表 |
Result Record Count | 输出的总行数 |
能够在不一样的标签页中检查这些信息,好比Timeline ,Operator List, Table used , Performance trace , Network等。
进行不一样节点间的大的表链接时,须要将数据在节点间传输。所以在多节点中执行这样的查询会花更多时间。
为了更好的理解PlanViz中的信息,最好只是用它来查看一个比较单一的操做。
能够点击Executed Plan按钮进入执行的细节信息中。也能够在细节信息中进一步下钻,以查看更详细的执行步骤。能够在其中看到查询条件等内容。
PlanViz中的每个方框表明一个所谓的计划算子(plan operator, POP)。计划算子的名字表示了处理它们的引擎。名字以CE开头的计划算子在计算引擎(calculation engine)中执行,以BW开头的在OLAP引擎中执行,以JE开头的在链接引擎(join engine)中执行。
在PlanViz显示里,数据从底部流向顶部。这就是说,咱们的查询结果在视图的顶部,而实际数据是从底部的数据库表查询获得的。中间的计划算子表明所需的变换。
若是有并行处理,图中会显示两个平行的单独方框。当你有一个复杂计划的时候你能够经过这点来观察它是否进行了并行的处理。在咱们当前的例子中,没有并行处理。但多数场景下你会看到运行在不一样的平行方框中的并行处理。
若是你把鼠标指针悬浮在方框上,会看到一个明细的弹出框,包含这个方框的详细信息。
节点的Exclusive Time表明运行单个操做所花费的时间。Inclusive Time是运行整个操做所花费的时间,包含子算子的时间,但不包含编译时间。这些信息有助于理解操做的性能。
若是你有一个很大的PlanViz,你能够经过选择“Show Critical Path Only”来查看并关注最重要的执行。
一些可能遇到的问题
这是系统设置问题,请参考本文:PlanViz for Analysing S4 HANA CDS View
联系你的系统管理员,按照文中给出的办法处理。
若是打开.plv文件后看到的是下面这样的文本,说明你的Eclipse没有安装HANA Tools,请尝试(从新)安装该插件。参考连接:https://tools.hana.ondemand.com/
(本文的大部份内容来自于Analyzing SQL Execution with the Plan Visualizer (PlanViz),本文只是将其中的HANA视图替换为了ABAP CDS视图,并作了少许增删)
参考连接:Analyzing SQL Execution with the Plan Visualizer (PlanViz)