好長時間沒怎麼看 Oracle 技術文檔了,今天閱讀了一篇 Oracle Response Time Optimization with Method R. 這是 Optimizing Oracle Performance 經典圖書這本經典圖書的主旨方法。R 代表回應時間(response time).具體的定義如下:
1. Target the tasks that are critical to the business.
2. Collect properly scoped, un-aggregated profile data for each task while the task is exhibiting the behavior you want to record.
3. React with the candidate repair that will have the greatest net payoff to the business.
a. Stop if the cost of the repair exceeds the cost of the problem.
這裡面的核心元素是 Profile .Profile 要提供應用程式到終端使用者的回應時間的詳細描述.體現到Oracle 資料庫這一層,就是要得到擴充的 SQL Trace 資料。是不是感覺有些"虛", R 方法和一些我們已知的資料庫最佳化方法頗一些相似之處,但是 Cary Millsap 宣稱 R 方法是目前已知 Oracle 最佳化方法中的最優秀的、最全面的。我們來看看一些簡單比較:
R方法 vs OWI 方法
OWI(Oracle wait interface)只是R方法中的一個基本元素. R 方法是適用更廣的(比如應用程式層)診斷指導策略(參見:How to Make an Application Easy to Diagnose);
R方法 vs YAPP
說來有趣, YAPP(Yet Another Performance Profiling Method) 方法的過程如下:
得到服務時間和等待時間及其組成部分
將所有組成部分排序
依次最佳化每個部分
對錶中的每一項,減少每次執行的代價或執行次數
我們看看笛卡爾的方法論:
永遠不接受任何我自己不清楚的真理,就是說要盡量避免魯莽和偏見,只能是根據自己的判斷非常清楚和確定,沒有任何值得懷疑的地方的真理。
可以將要研究的複雜問題,盡量分解為多個比較簡單的小問題,一個一個地分開解決。將這些小問題從簡單到複雜排列,先從容易解決的問題著手。將所有問題解決後,再綜合起來檢驗,看是否完全,是否將問題徹底解決了。 這是笛卡爾的方法論,內容引自不可以隨便訪問的維基百科.
YAPP 其實不過是笛卡爾方法論的一個體現形式而已.YAPP 只適用於 Oracle 層,對於 Web 應用程式層等則無能為力; R 方法適用的範圍更廣(其實是 YAPP 的進化版本); YAPP 也搞不定 Oracle 的 idle events .
R 方法 vs 瓶頸分析(bottleneck analysis)
瓶頸分析則首先要找到瓶頸, R 方法是以目標任務為導向的, 著眼於業務. 直接抓最關心的角度.雖然現在應用還不夠廣泛,但 R方法(Method R)是一種在理論上比較完美的方法.其中的產生思想值得我們深思.
1