如何开始查询调优?

Ale*_*lex 1 oracle oracle11g

寻找有关如何开始Oracle调优的建议,我以前从未这样做过.

我想知道如何对查询进行性能调优.我们为客户构建应用程序,所以我这里没有生产数据库.我基本上知道哪些查询很重要,并且希望确保它们能够快速运行.

在MSSQL中,它非常简单,当您启用执行计划时,它会显示有助于查询的其他索引.有没有类似于Oracle的东西?或许还有另一种方法?

Jef*_*emp 6

性能调优是一个很大的主题.人们采用两种基本类型的方法:科学猜测.

A.猜测(也称为霰弹枪方法)

  1. 查看查询
  2. 猜猜哪些列需要已经没有它们的索引 *
  3. 创建索引并重新运行查询
  4. 如果没有区别,请返回步骤1并重复.

B.科学

  1. 找出查询"应该"有多快.
  2. 确定查询的实际速度(尽可能在"实际"条件下).
  3. 如果它已经足够快,请停在这里.除此以外:
  4. 确定大部分时间的去向 - 是旋转还是等待?
  5. 如果它正在等待,找出它正在等待的东西,并在可能的情况下消除它.
  6. 如果它在旋转,找出它不需要做的事情,并在可能的情况下消除它.
  7. 回到第2步并重复一遍.

(*如果没有要创建的索引,请查找其他要更改的内容 - 任何内容.例如,更改一些会话或系统设置,重建表等)

(***如果不明显,我提倡方法A)