2011-02-22 168 views
1

下列命令最适合做什么?数据库性能

  1. EXEC dbms_stats.gather_table_stats

  2. dbms_stats.gather_schema_stats

哪一个提高数据库的性能?

+0

这些命令是相同的。 `EXEC`只是在SQL * Plus中运行该过程的一种方式;否则,您必须将该呼叫包含在BEGIN/END块中。 – 2011-02-23 01:01:43

回答

5

它们都提高了数据库性能(或者说,它们都收集统计数据,将被oprtimiser使用,并且可能会提高性能)。 GATHER_SCHEMA_STATS收集模式中所有对象的统计信息。 GATHER_TABLE_STATS仅用于一张桌子。您可以在the documentation中阅读所有关于它们的内容。

3

两者。都不是。依靠。

“数据库性能”是什么意思?在现有表格和索引上收集统计数据可以帮助统计数据过期。但他们不是一个神奇的项目符号,它将替代添加有用的索引供问题查询使用。

在一张桌子上更新统计数据可能就是您所需要的所有问题。 更新所有索引列上的统计数据可能是按顺序排列的。 或者这些可能不是您从性能角度处理的问题。良好的索引无助于书面查询。

你需要弄清楚什么是特别慢,然后才能找出如何解决它。对于整个数据库来说肯定没有一个加速踏板 - 不管我们大家希望如何。

2

自从10g以后,Oracle会定期收集数据。你有没有注意到标准聚会在你的案例中太稀少或者不够详细? estimate_percent < 100的默认值可能会导致10g中的计划不正确。

  1. 看看你的应用程序,如果性能没问题,你就完成了。如果没有...
  2. 专注于您的应用程序所做的任务,以减慢并分解花费在主要贡献者身上的时间。尝试优化主要贡献者。性能可以接受时停止。

统计数据收集可能是您将应用的优化之一,但我们无法预先知道。在增强Oracle的默认统计信息收集之前,您需要查找不适合使用手动收集的统计信息选择的次优查询计划。

卡里米尔萨普本优秀论文可以帮助你:http://method-r.com/downloads/doc_details/44-thinking-clearly-about-performance