SAP HANA Database Explorer 里的 SQL 语句如何排错 trouble shoot
Troubleshoot SQL with SAP HANA Database Explorer
調試器可用于幫助查找過程、函數或匿名塊中的問題。 以下步驟演示了如何使用調試器來調試過程。
選中某個存儲過程,右鍵,選擇 Open for debugging:
從調試器附加選項對話框中,確保選擇了 SQL 控制臺連接。
 
通過單擊行號旁邊的在過程中設置斷點。 行號旁邊將出現一個復選標記,表示已設置斷點。
 
在數據庫瀏覽器中右鍵單擊需要調試的存儲過程,然后選擇 Generate Call Statement 或 Generate Call Statement with UI。
該過程的調用語句將在新的 SQL 控制臺中打開。 提供輸入參數值,例如 10,然后運行該語句。
 
當斷點觸發時,執行將暫停。
 
可以檢查使用的任何變量的當前值。 可以通過單擊上面突出顯示的編輯按鈕來修改某些局部和全局變量類型的值。
可以使用調試器頂部的導航圖標繼續執行。 可以使用分離圖標停止調試會話。
 
右鍵菜單里,還能使用 Report Code Coverage 查看代碼執行覆蓋率:
代碼覆蓋率報告顯示命中的語句數。
 
該報告還直觀地顯示了命中的語句和未命中的語句。
 
SQLScript analysis
SQLScript 代碼分析器可用于識別指示代碼質量、安全性或性能問題的模式。
效果如下:
 
雙擊某個問題將打開另一個包含該過程的 SQL 的選項卡,該問題將突出顯示。
 
Explain plan
解釋計劃以表格形式提供編譯后的計劃,而不執行它。 當很難在不引起問題的情況下重現問題時,這在分析某些情況時非常有用。
效果如下:
 
SQL Analyzer
SQL 分析器提供了如何執行分析的 SQL 語句的圖形視圖,這可以提供對查詢執行的更多見解。 最新版本可用作 Visual Studio Code 的擴展或 SAP Business Application Studio 中的附加擴展 (SAP Performance Tools)。 可以在 SAP HANA 數據庫瀏覽器中生成一個 .plv 文件,然后可以在 SQL Analyzer 中打開該文件。 內部部署 SAP HANA 數據庫瀏覽器、內部部署 SAP HANA 駕駛艙以及 SAP HANA 工作室中還包含 SQL 分析器的先前版本。
可以在 Visual Studio Code 里安裝對應的插件來查看分析文件:
 
顯示前 5 個主要運算符、前 10 個關鍵路徑運算符、編譯和執行 SQL 語句所花費的時間、峰值內存、結果記錄數和訪問表的信息。
 
切換到 PLAN GRAPH 選項卡以直觀地查看查詢執行的詳細信息。
 
SQL trace
在調試問題或識別特定應用程序正在使用的 SQL 語句時,SQL 跟蹤會很有幫助。 以下步驟演示了啟用 SQL 跟蹤,然后使用 SAP HANA 數據庫資源管理器查看生成的跟蹤文件的示例。
右鍵菜單里通過 Show overview 進行查詢:
 
為選定的數據庫顯示不同的信息和統計數據。
 
要確定為填充概覽的各個字段(例如使用的內存)而執行的 SQL 請求,請通過在 SQL 控制臺中運行以下 SQL 語句來啟用 SQL 跟蹤。
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('sqltrace', 'trace') = 'on', ('sqltrace', 'application') = 'sap_xsac_hrtt', ('sqltrace', 'user') = 'DBAdmin' WITH RECONFIGURE;可以通過對以下監控視圖執行選擇來查看配置文件的名稱、它們的內容和更改歷史記錄:
- M_INIFILES
 - M_INIFILE_CONTENTS
 - M_INIFILE_CONTENT_HISTORY
 - CONFIGURATION_PARAMETER_PROPERTIES
 - M_CONFIGURATION_PARAMETER_VALUES
 
trace 文件的位置:
 
可以在文件中查看返回有關 HANA 實例正在使用的內存的信息的 SQL 查詢。 例如,突出顯示的查詢就是這樣一種 SQL 請求。
 
Expensive statements trace
檢查消耗大量時間、CPU 或內存的 SQL 語句可能很重要。 以下步驟演示了如何啟用昂貴的語句跟蹤。
下面的 SQL 將啟用昂貴語句的跟蹤,設置閾值,運行一些將超過閾值的語句,然后禁用昂貴的語句跟蹤。
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'enable') = 'on' WITH RECONFIGURE; ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'threshold_memory') = '41943040' WITH RECONFIGURE; -- 40 MB ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'threshold_duration') = '3000000' WITH RECONFIGURE; -- 3 secCALL HOTEL.RESERVATION_GENERATOR(1000); --consumes more than 40 MB of memoryDO BEGIN-- Wait for a few secondsUSING SQLSCRIPT_SYNC AS SYNCLIB;CALL SYNCLIB:SLEEP_SECONDS( 3 ); --runs for longer than 3 seconds-- Now execute a querySELECT * FROM M_TABLES; END;ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'enable') = 'off' WITH RECONFIGURE;可以在視圖中找到超出昂貴語句閾值的語句列表:M_EXPENSIVE_STATEMENTS
select TOP 2 DURATION_MICROSEC/1000000, CPU_TIME/1000000, MEMORY_SIZE/1048576, START_TIME, RECORDS, STATEMENT_STRING from M_EXPENSIVE_STATEMENTS order by start_time desc;Viewing trace files with SQL
SAP HANA 數據庫提供一組監控視圖,允許訪問跟蹤文件。 一個例子是 M_MERGED_TRACES 系統視圖,它包含多個跟蹤文件的內容,允許在特定時間段內跨跟蹤文件執行查詢。 以下說明提供了一些訪問視圖的示例。
可以查詢有關可用跟蹤文件和來自各個跟蹤文件的內容的信息。
SELECT * FROM M_TRACEFILES; SELECT * FROM M_TRACEFILE_CONTENTS WHERE HOST = 'XXXXXXXX' AND FILE_NAME='XXXXXXXX.XXX';執行以下 SQL 查詢以查看過去 45 分鐘的條目。
SELECT SERVICE_NAME, TIMESTAMP, TRACE_LEVEL, COMPONENT, SOURCE_FILE_NAME, TRACE_TEXT FROM M_MERGED_TRACES WHERE TIMESTAMP > ADD_SECONDS (TO_TIMESTAMP (CURRENT_TIMESTAMP), -1*60*45) AND TIMESTAMP < CURRENT_TIMESTAMP ORDER BY TIMESTAMP;SAP HANA 的 SAP Note SQL 語句集合包含一個名為 HANA_TraceFiles_Content 的查詢,該查詢還包括與跟蹤文件中的某些字符串匹配的相關 SAP 注釋。
更多Jerry的原創文章,盡在:“汪子熙”:
 
總結
以上是生活随笔為你收集整理的SAP HANA Database Explorer 里的 SQL 语句如何排错 trouble shoot的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 珍和珠与什么有关
 - 下一篇: SAP Commerce Cloud,通