spm总体说明
目錄
1、如何工作
2、何時使用
1、如何工作
sql plan baseline 是一個關聯sql 語句的對象,設計會影響查詢優化器生成執行計劃,更具體的說,一個sql baseline包含其中的一些內容,一個或多個執行計劃的一組HINTS信息,基本上一個SQL plan baselines被使用會強制使查詢優化器對于一個給定的sql語句生成一致的執行計劃。
不是所有的HINTS都存儲在SQL plan baselines中,有哪些不能存儲呢?
SELECT name FROM v$sql_hint WHERE version_outline IS NULL
雖然 眾多的HINTS不存儲在sql plan baselines中但是不會影響執行計劃(如:gather_plan_statistics)。還有一些其他會影響(如materialize和inline),這種結果,一些執行計劃不能強制通過sql plan baseline 無需指定hint的模式
sql plan baseline其中一個好處他應用指定的sql語句,不需要修改sql 語句。實際上,sql plan baselines被存儲與sql 管理基中,查詢優化器自動選擇他們,基本的步驟:
第一:常規方法sql語句被解析,換句話說,查詢優化器在沒有sql plan baseline的支持下生成一個執行計劃
之后,查詢優化使sql語句無大小寫敏感并文本中的空格內容可以忽略,sql 語句的結果簽名(signature)被計算,進入sql 管理基中被執行,如果一個sql plan baseline有相同的簽名被找到,被核對確認sql語句被優化并sql 語句關聯的sql plan baseline是相同的,這個核對是必須的因為簽名是一個hash 值,隨后,可能會有沖突。
當測試成功,查詢優化器驗證sql plan baseline是否包含這個生成的執行計劃,如果包含并接受的,就執行他
如果在sql plan baseline存儲的被接受是其他執行計劃,這個HINTS關聯它被使用其他執行計劃生成。注意如果這個SQL plan baseline包含若干個執行計劃,查詢優化器選擇最低代價的一個。
最后,查詢優化器核對執行計劃是否通過sql plan baseline的信息提供生成所期望的執行計劃,如果最后核對被滿足,執行計劃可以被使用,如果不能滿足,這個查詢優化器嘗試其他接受的執行計劃,如果他們都不能重現,他會在沒有sql plan baseline重新生成執行計劃。
2、何時使用
使用sql plan baselines有兩種情況,第一,無論你何時優化sql 語句都不能改變應用(如,在應用中不能把增加hints選項)。第二,你應該考慮何時、怎么的原因使用它,你遇到了麻煩的執行計劃不穩定,因為sql plan baselinegs的目標是強制查詢優化器從可以接受的執行計劃的限制列表中選擇一個執行計劃,當你明確想限制查詢優化器選擇一個指定的執行計劃。
總結
- 上一篇: 什么是PRC及RPC底层实现(1)
- 下一篇: 第四范式涂威威:打造专属大模型的三大关键