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