1999997 - FAQ: SAP HANA Memory
之前是 CPU 持續使用率變高的問題,但根本的原因可能是其他因素造成,比如記憶體被用爆了,造成系統強制啟用 GC讓 connection 一直在排隊, CPU一直在忙錄,使用者一直在等待,所以問題並沒有解決。
如果你跑了 performance script 檢示相關資訊也調整了相關參數還是沒有用的話,可以檢示 indexserver.trc
indexserver.trc 出現 Reason for shrink訊息,可能是單一 sql 的效率問題,可以利用 StatementHash or StatementExecutionID 去 DB 查詢 sys view M_EXPENSIVE_STATEMENTS 找到對應的 sql並利用 explain plan 去檢示寫法是否有問題並修正。
--要設定一個 STATEMENT_NAME,執行前先刪除,不然跑多個在查詢時會不知結果是那一個
DELETE FROM EXPLAIN_PLAN_TABLE WHERE STATEMENT_name = 'insp2';
--執行 plan
EXPLAIN PLAN SET STATEMENT_name = 'insp2' FOR
select top 10 * from ...........
--查看結果
SELECT * FROM EXPLAIN_PLAN_TABLE
where STATEMENT_name = 'insp2'
以這一次經驗來說,發現系統導入顧問的一個 view 寫法很有問題,原本可以用 max + group by 的方式找出最新一筆的資料,但他徧徧用 row_number + where rownum =1 的方式寫,這種寫法就是把 db 給搞掛了的元兇,而且是開了好幾次 case 請顧問查看此問題但卻一直沒有發現。
找 performance 問題真正是一個大工程,除了跑官方建議 script 作檢查還要檢示一些記錄檔,讓開發為主的我學習到不少,最後的問題居然是 view 的寫法造成大災難,原本以為顧問開發的程式或 view 一定沒有問題,一直往 OS, DB的方向找解決方式,我真的是太真了。
Explain Plan 結果出現 EXS 的要多留意
Explain Plan Result of Original SQL Statement
| OPERATOR_NAME | EXECUTION_ENGINE |
| -------------------------- | ---------------- |
| ESX SEARCH | ESX |
| HASH JOIN (LEFT OUTER) | ESX |
| NESTED LOOP JOIN (LEFT OUTER) | ESX |
| HASH JOIN (LEFT OUTER) | ESX |
| COLUMN SEARCH | COLUMN |
| JOIN | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| WINDOW | ESX |
| COLUMN SEARCH | COLUMN |
| JOIN | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN SEARCH | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN SEARCH | COLUMN |
| COLUMN TABLE | COLUMN |
Explain Plan Result After Changing SQL Statement
| OPERATOR_NAME | EXECUTION_ENGINE |
| -------------------- | ---------------- |
| COLUMN SEARCH | COLUMN |
| JOIN | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN TABLE | COLUMN |
| COLUMN SEARCH | OLAP |
| AGGREGATION | OLAP |
| COLUMN TABLE | OLAP |
沒有留言:
張貼留言