本篇文章為大家展示了如何理解SAP HANA Hint,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
HANA Hint是SAP14 HANA數據庫服務器執行的一種指令。HANA Hint會影響一個數據庫請求的生成和處理的方式,但絕不會改變這些數據庫請求的響應結果。通俗的說,如果你不用Hint, 執行某條SQL語句查詢到了N條記錄。那么用了Hint,查詢結果仍然是N條。HANA Hint通常用來進行HANA的性能調優,比如對執行某條SQL語句CPU或者內存占用率的優化。
SAP HANA Hint有下列幾種類型:
直接用于HANA Studio的SQL語句里。通過select * from hints能夠拿到當前版本的HANA支持的所有Hint. 在我用的HANA服務器上總共216個:
用法: 如下圖紅色下劃線所示:
如果您的Netweaver用的數據庫是HANA,而您又想把這些Hint用在ABAP Open SQL里,那么可以使用語法: %_HINTS HDB后跟Hint的具體內容。例如下圖:
如果Netweaver的版本小于740, 需要將HDB替換成ADABAS。
對于那些Netweaver用的數據庫是非HANA DB的場景,需要使用數據庫提供商特定的Hint。具體細節可以查詢對應的SAP note。
130480 Database hints in Open SQL for Oracle
133381 Database hints in Open SQL for MS SQL Server
150037 Database hints in Open SQL for DB6 (DB2 UDB)
152913 Database hints in Open SQL for Informix
162034 DB2/390: Database hints in Open SQL
485420 iSeries: Database hints for Open SQL/Native SQL
652096 Database hints in Open SQL for SAPDB / MaxDB
1702338SYB: Database hints in Open SQL for Sybase ASE
在ABAP的OPEN SQL里使用方法類似,把 %_HINTS后的HDB替換成指定數據庫提供商的代號,再加上數據庫提供商特定的Hint.
ABAP支持的數據庫提供商的代號在ABAP help里能查到。
ce2qo_disable_unfolding
ce2qo_for_nested_views_with_sql_execution
enable_star_join_ceqo
ce2qo_for_unit_conversion
qo_pop_hints
query_level_sql_hints
這種類型的Hint用于HANA Studio里創建的Calculation View,而非ABAP Development Tool創建的CDS(Core Data Service) View. 我沒有用過,沒法舉例。
更多細節請查詢SAP note 2509161。
詳細列表能在note 2142945的正文里找到,這里就不贅述了。值得一提的是,并沒有一個統一的最佳實踐指明了諸如”應用某某hint就一定能提高性能”。Hint的使用需要根據具體的SQL語句來分析,沒辦法一概而論。
最極端的例子就是這對互斥的Hint: CS_JOIN 和NO_CS_JOIN, 它們分別用于建議HANA數據庫采用或者不采用Column Store Join來響應數據請求。
我的一個實際工作中的例子:這個簡單的報表從HANA數據庫中讀取100條描述信息包含了文本”2017-12-11″的服務訂單:
總共花費了15秒鐘:
而當我加上NO_CS_JOIN的hint之后,
性能提升到不到1秒即完成了數據查詢。
在note 2142945的末尾還包含很多其他有用的note。將來如果工作需要,我會將這些note陸續翻譯成中文并加上自己的理解。
上述內容就是如何理解SAP HANA Hint,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。