数据库表现

时间:2011-02-22 17:14:24

标签: oracle

以下命令中最好做什么?

  1. exec dbms_stats.gather_table_stats

  2. dbms_stats.gather_schema_stats

  3. 哪一个提高了数据库性能?

3 个答案:

答案 0 :(得分:5)

它们都提高了数据库性能(或者说,它们都收集将由oprtimiser使用的统计信息,可能提高性能)。 GATHER_SCHEMA_STATS收集模式中所有对象的统计信息。 GATHER_TABLE_STATS仅用于一个表。您可以在the documentation中阅读所有相关信息。

答案 1 :(得分:3)

两者。都不是。取决于。

“数据库表现”是什么意思?如果统计信息已过期,则收集现有表和索引的统计信息可能会有所帮助。但它们不是一个神奇的子弹,它将取代添加有用的索引以供问题查询使用。

更新一个表上的统计信息可能就是您的问题所需的全部内容。 更新所有索引列的统计信息可能是有序的。 或者这些可能不是您从性能角度处理的问题。好的索引不会帮助编写错误的查询。

在弄清楚如何修复之前,你需要弄清楚什么是特定的慢。当然,整个数据库都没有一个加速踏板 - 无论我们怎么想都有。

答案 2 :(得分:2)

Oracle自10g以来定期收集统计信息。您是否注意到标准聚会太罕见或不够详细?默认值为estimate_percent< 100可以导致10g的糟糕计划。

  1. 查看您的应用程序,如果性能良好,您就完成了。如果不是......
  2. 专注于您的应用程序所做的任务以减缓并分解花费在主要贡献者身上的时间。尝试优化主要贡献者。当表现可以接受时停止。
  3. 统计信息收集可能是您要应用的优化之一,但我们无法事先知道。在您扩充Oracle的默认统计信息收集之前,您将查找不会使用手动收集的统计信息选择的次优查询计划。

    Cary Millsap撰写的优秀论文可能对您有所帮助:http://method-r.com/downloads/doc_details/44-thinking-clearly-about-performance