好长时间没怎么看 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.
4. Go to step 1.
这里面的核心元素是 Profile .Profile 要提供给用程序到最终用户的响应时间的具体描述.体现到 Oracle 数据库这一层,就是要得到扩展的 SQL Trace 数据。
是不是感觉有些"虚", R 方法和一些我们已知的数据库优化方法颇一些相似之处,但是 Cary Millsap 宣称 R 方法是目前已知 Oracle 优化方法中的最优秀的、最全面的。我们来看看一些简单比较:
R方法 vs Oracle Wait Interface ">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)是一种在理论上比较完美的方法.其中的产生思想值得我们深思.