摘要:Oracle數據庫11gR1引入了SQL計劃管理,提供了一套新的工具,用于Oracle DBA捕獲和保存每條SQL語句最佳的執行計劃,限制優化器統計的刷新,改變現有的應用程序,甚至升級數據庫版本。本文對SQL計劃管理概念提供一個入門介紹,并給出了它的性能調試功能的一個簡單示例。
我的另外一篇關于Oracle數據庫11g新的SQL性能分析器(SPA)工具的文章探討了用于SQL語句捕獲和性能分析統計的技術,這樣,在環境改變之前,能更正確地預報環境改變對SQL語句性能的影響,雖然這對每個Oracle DBA而言都是一套有價值的工具包,但任何資深的DBA都會告訴你這只成功了一半。
當一個有效的(和極好的)SQL語句執行計劃突然變得無效時會出現一個更隱蔽的問題:SQL語句會被重新解析,但實際上新執行計劃的結果比原來的計劃更糟糕,有下面幾個原因會引發這一事件的發生:
◆游標老化最后從庫緩存中被清除出去,因為這需要它的SQL語句被硬解析,游標可能碰巧使用了效率更低的執行計劃。
◆當優化器統計重新計算游標的依賴對象時游標也可能是無效的,或當游標依賴的某個對象被修改了。
◆還有其他一些原因,不外乎改變SQL語句計劃的穩定性:優化器版本的改變,初始化參數的修改,甚至為SQL語句創建新的SQL配置文件(Oracle10g后)。
SQL計劃管理:簡短的歷史介紹
每個DBA面對的最大挑戰是不但要能識別哪條SQL語句正糟糕地在執行,而且要為SQL語句找到最佳的執行計劃,并使這些計劃對所有語句都是可用的并能從中受益,這些解決方案的發展成為了一個有趣的歷史。
第一階段:存儲概要(stored outlines)
Oracle 8i提供了一個捕獲SQL語句執行計劃并保存為存儲概要的機制,一個存儲概要實際上是一條由DBA或開發者優化過的存儲在OUTLN方案中的SQL語句(有時是通過工具進行優化的,但大多數時候是靠不斷的試驗和對比得出的),當一條SQL語句被執行且它的執行計劃與存儲概要完全匹配,Oracle就使用存儲概要替換使用的SQL語句,存儲概要也可以分階段執行,或限制到僅那些匹配的會話才能執行。
這提出了Oracle 8i術語:計劃穩定性,它可能是有用的,也有一些確定,最嚴重的是存儲概要計劃隨時間的推移變得越來越過時和陳舊了,因為數據分配或優化統計在不停改變,實際上存儲概要傾向于強制一條語句使用一個效率可能相當低的計劃,而一個新的效率更好的計劃可能只需要簡單的重新解析該語句即可。
第二階段:SQL配置文件(SQL profiles)
Oracle數據庫10g使用了一個叫做SQL配置文件的新方法彌補了存儲概要的缺點,DBA可以使用SQL調整顧問(STA)或SQL訪問顧問(SAA)來識別可以得到更好性能的SQL語句,這些語句可以保存在SQL調整集、一個AWR快照或保存在當前的庫緩存中,一旦識別出調整候選者,這些顧問程序就開始分析捕獲到的語句以期獲得更好的性能,然后生成專用的語句擴展(就叫做SQL配置文件)并重寫SQL語句以在執行期間獲取更佳的性能。
與存儲概要類似,一個SQL配置文件提供了使用更好的執行計劃的能力(如果這個執行計劃是可用的),SQL配置文件也可以象存儲概要一樣分階段執行,或限制到對特定會話才能執行該SQL配置文件,但是大多數重要的改進超過了存儲概要,至少有兩方面:(a)自我調整的能力保障了SQL配置文件能提供最好的執行計劃,(b)檢查SQL配置文件不再有效的能力(因此ADDM建議需要生成一個新的SQL配置文件)。
第三階段:SQL計劃管理
Oracle11g實現了一個新特色,叫做SQL計劃管理(SPM),它通過一個簡單而優雅的方法克服了異常的SQL執行計劃回退,一旦一個用戶會話啟用了自動捕獲SQL計劃基線,基于成本的優化器(CBO)記錄該會話執行的每條SQL語句到SQL管理庫(SMB),它存儲了SQL語句文本,存儲概要,綁定變量和它的兼容環境,它將這些作為一個SQL計劃的基線。
因為這是該語句第一次執行,Oracle11g會評估存儲的執行計劃哪個是最佳的,在下次執行同樣的SQL語句過程中,SQL計劃管理程序程序就很清楚了,在該語句的第二次執行時,基于成本的優化器(CBO)會與當前存儲在SMB中的執行計劃進行比較,如果CBO發現了一個新的計劃,首先會將該新計劃添加到計劃歷史中,然后評估該新計劃看其效率是否比當前SMB中的執行計劃更好。
如果新的執行計劃可以提升SQL語句的性能,SQL計劃管理程序(SPM)就將該計劃標記為該語句執行的最佳選擇,當DBA沒有手動修改初始化參數OPTIMIZER_USE_SQL_PLAN_BASELINES的默認值TRUE時,現在該語句執行過程中CBO會使用新的執行計劃,換句話說,因為使用了新的計劃而語句的實際性能倒退了的話,CBO將會從SMB中選擇一個認可的成本更低的計劃,SPM將在SMB中存儲新的執行計劃,因為它可能在進來成為最好的執行計劃選擇。
| 共3頁: 1 [2] [3] 下一頁 | |||||
|


