天天看點

使用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。

使用PlanViz進行ABAP CDS性能分析
使用PlanViz進行ABAP CDS性能分析

關閉跟蹤,顯示結果,如下圖,

使用PlanViz進行ABAP CDS性能分析

我們會找到對視圖DEMO_CDS_JOIN的查詢語句的跟蹤記錄,選中它,點選菜單欄的Edit->Display Exceution Plan->For Recorded Statement

使用PlanViz進行ABAP CDS性能分析

在新頁面中點選工具欄中的Execution Trace,将字尾plv的跟蹤檔案儲存在本地,

使用PlanViz進行ABAP CDS性能分析

3,概覽

使用HANA Studio或者安裝了HANA Tools的Eclipse打開下載下傳好的plv檔案,可以看到跟蹤的有關資訊,其中第一個頁面是概覽。

使用PlanViz進行ABAP CDS性能分析

 概覽中的一些資訊的涵義如下,

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進行ABAP CDS性能分析

在PlanViz顯示裡,資料從底部流向頂部。這就是說,我們的查詢結果在視圖的頂部,而實際資料是從底部的資料庫表查詢得到的。中間的計劃算子代表所需的變換。

如果有并行處理,圖中會顯示兩個平行的單獨方框。當你有一個複雜計劃的時候你可以通過這點來觀察它是否進行了并行的處理。在我們目前的例子中,沒有并行處理。但多數場景下你會看到運作在不同的平行方框中的并行處理。

如果你把滑鼠指針懸浮在方框上,會看到一個明細的彈出框,包含這個方框的詳細資訊。

節點的Exclusive Time代表運作單個操作所花費的時間。Inclusive Time是運作整個操作所花費的時間,包含子算子的時間,但不包含編譯時間。這些資訊有助于了解操作的性能。

 如果你有一個很大的PlanViz,你可以通過選擇“Show Critical Path Only”來檢視并關注最重要的執行。

使用PlanViz進行ABAP CDS性能分析

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/

使用PlanViz進行ABAP CDS性能分析

(本文的大部分内容來自于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