使用PlanViz進行ABAP CDS性能分析

如管理學學者彼得·德魯克所說:你沒法管理你不能衡量的東西( 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性能優化

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文件,能夠看到跟蹤的有關信息,其中第一個頁面是概覽。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按鈕進入執行的細節信息中。也能夠在細節信息中進一步下鑽,以查看更詳細的執行步驟。能夠在其中看到查詢條件等內容。

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

相關文章
相關標籤/搜索