Oracle 数据库优化的R方法(Method R)

好长时间没怎么看 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 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)是一种在理论上比较完美的方法.其中的产生思想值得我们深思.


3 thoughts on “Oracle 数据库优化的R方法(Method R)

Leave a Reply

Your email address will not be published. Required fields are marked *