1

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

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

在 MSSQL 中,它非常简单,当您启用执行计划时,它会显示有助于查询的附加索引。Oracle中有类似的东西吗?或者也许是另一种方法?

4

2 回答 2

6

性能调优是一个大课题。人们采用两种基本的方法:科学猜测

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

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

B. 科学

  1. 找出查询“应该”有多快。
  2. 确定查询的实际速度(尽可能在“现实”条件下)。
  3. 如果它已经足够快,请停在这里。否则:
  4. 确定大部分时间的去向——是旋转还是等待?
  5. 如果它在等待,找出它在等待什么,并尽可能消除它。
  6. 如果它在旋转,找出它在做什么它不需要做,并尽可能消除它。
  7. 返回第 2 步并重复。

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

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

于 2012-04-13T02:10:15.657 回答
-1

我建议的第一件事是,如果您不打算对 prod 数据库进行调整,则应该将表静态数据从 prod db 导入到您的 Dev 数据库中。这将使您的 Dev 系统的行为与 prod 具有相似的数据。如果你谷歌导入统计数据,你会发现大量文章。下一阶段将查看您可以添加索引的查询,通常您认为全表扫描是一个不错的地方。

你使用绑定变量吗?

Oracle 做了很多缓存数据,所以看看你可以在哪里使用绑定变量,这将在服务器进程的私有空间中进行过滤,并避免数据库进行物理读取,从而快速返回数据。

希望这可以帮助。

于 2012-04-12T22:45:34.540 回答