zoukankan      html  css  js  c++  java
  • 使用PlanViz进行ABAP CDS性能分析

    如管理学学者彼得·德鲁克所说:你无法管理你不能衡量的东西( If you can't measure it, you can't manage it)。要对已有程序进行性能优化,首先要对它的运行状况做出量化分析。

    将代码下推到ABAP CDS,是SAP推荐的一种优化方式。但正因逻辑从应用服务器向数据库的转移,传统运行时分析工具SAT也有了力所不能及之处。这时,我们需要新的工具来对这一新的开发对象的运行情况进行分析。

    本文将介绍Plan Visualizer(以下简称PlanViz)在ABAP CDS性能分析方面的应用。

    本文链接:https://www.cnblogs.com/hhelibeb/p/10472856.html

    1,示例CDS视图

    本文会用到一个系统自带的简单示例视图,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 } 

    2,获取跟踪文件

    打开ST05的SQL跟踪,然后在任何地方(SQL Console, SE16, SE38)执行对视图DEMO_CDS_JOIN的查询,本文使用的是SE16。

     

    关闭跟踪,显示结果,如下图,

    我们会找到对视图DEMO_CDS_JOIN的查询语句的跟踪记录,选中它,点击菜单栏的Edit->Display Exceution Plan->For Recorded Statement

    在新页面中点击工具栏中的Execution Trace,将后缀plv的跟踪文件保存在本地,

    3,概览

    使用HANA Studio或者安装了HANA Tools的Eclipse打开下载好的plv文件,可以看到跟踪的有关信息,其中第一个页面是概览。

     概览中的一些信息的涵义如下,

    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按钮进入执行的细节信息中。也可以在细节信息中进一步下钻,以查看更详细的执行步骤。可以在其中看到查询条件等内容。

    4,执行计划

    PlanViz中的每一个方框代表一个所谓的计划算子(plan operator, POP)。计划算子的名字表示了处理它们的引擎。名字以CE开头的计划算子在计算引擎(calculation engine)中执行,以BW开头的在OLAP引擎中执行,以JE开头的在连接引擎(join engine)中执行。

    在PlanViz显示里,数据从底部流向顶部。这就是说,我们的查询结果在视图的顶部,而实际数据是从底部的数据库表查询得到的。中间的计划算子代表所需的变换。

    如果有并行处理,图中会显示两个平行的单独方框。当你有一个复杂计划的时候你可以通过这点来观察它是否进行了并行的处理。在我们当前的例子中,没有并行处理。但多数场景下你会看到运行在不同的平行方框中的并行处理。

    如果你把鼠标指针悬浮在方框上,会看到一个明细的弹出框,包含这个方框的详细信息。

    节点的Exclusive Time代表运行单个操作所花费的时间。Inclusive Time是运行整个操作所花费的时间,包含子算子的时间,但不包含编译时间。这些信息有助于理解操作的性能。

     如果你有一个很大的PlanViz,你可以通过选择“Show Critical Path Only”来查看并关注最重要的执行。

    Q&A

    一些可能遇到的问题

    ST05下载跟踪文件时系统提示Using PlanViz is currently not allowed on this system

    这是系统设置问题,请参考本文:PlanViz for Analysing S4 HANA CDS View

    联系你的系统管理员,按照文中给出的办法处理。

    使用Eclispe打开.plv文件,看到的却是文本

    如果打开.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)

           CDS view performance analysis using PlanViz in HANA studio

           PlanViz for Analysing S4 HANA CDS View

  • 相关阅读:
    CF961E Tufurama 主席树
    [BZOJ3638 && BZOJ3272]带修区间不相交最大K子段和(线段树模拟费用流)
    [BZOJ5294][BJOI2018]二进制(线段树)
    [BZOJ5293][BJOI2018]求和(倍增)
    [BZOJ5306][HAOI2018]染色(容斥+FFT)
    [BZOJ5303][HAOI2018]反色游戏(Tarjan)
    [CF1053C]Putting Boxes Together(线段树)
    整体二分
    JSOI2018R2题解
    LCT维护子树信息
  • 原文地址:https://www.cnblogs.com/hhelibeb/p/10472856.html
Copyright © 2011-2022 走看看