`

analyze和dbms_stats函数的区别

阅读更多

analyze和dbms_stats函数都是收集一些统计信息,如下:

select table_name, num_rows, blocks, avg_row_len
  from user_tables
 where table_name = 'T';

 

 
analyze table t compute statistics;

 

 
删除统计信息
analyze table t delete statistics;

 

用dbms_stats函数如下:

SQL> exec dbms_stats.gather_table_stats(user,'T');

 

得到的结果和analyze相同。

 

一般对于常规的使用(不考虑分区表,外部表等特性),使用Analyze可以帮助我们得到我们需要的数据。细微的区别如下:

一、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句

  1. 可以并行进行,对多个用户,多个Table
  2. 可以得到整个分区表的数据和单个分区的数据。
  3. 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
  4. 可以倒出统计信息
  5. 可以用户自动收集统计信息

二、DBMS_STATS的缺点

  1. 不能Validate Structure
  2. 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
  3. DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True

三、对于oracle 9版本后面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。

 

 

  • 大小: 12.1 KB
  • 大小: 11.6 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Oracle内置包_reference

    DBMS_UTILITY包提供了一系列实用函数,如分析SQL语句(ANALYZE_STATEMENT)、格式化输出PL/SQL块(FORMAT_SOURCE)以及获取数据库版本信息(GET_VERSION)。这个包对于调试和优化PL/SQL代码非常有用。 二、DBMS_...

    oracle 函数 oracle函数 存储过程

    Oracle数据库系统提供了丰富的功能,其中包括各种内置函数和存储过程,这些工具对于数据库管理和开发工作至关重要。本文主要聚焦于两个核心组件:`DBMS_OUTPUT`包和`DBMS_JOB`包,详细阐述它们的作用、用法及其相关...

    Oracle运维最佳实践-下.pdf 带书签

    ### Oracle运维最佳实践知识点梳理 #### 一、概述 **Oracle运维最佳实践**是一套针对Oracle数据库维护和管理的专业指南,旨在帮助运维人员提升数据库的性能、稳定性和安全性。... - 使用`DBMS_ADVISOR.ANALYZE_ADM...

    Oracle数据库管理员技术指南

    4.4 镜像和复用的区别 4.5 为高可用性选择磁盘类型 4.6 常规的 RAID 技巧 4.7 给控制文件增长的空间 4.8 如何配置日志组 4.9 保护 SYSTEM 表空间的三种简单 方法 4.10 为什么必须保护 ORACLE_HOME 4.11 保护...

    ORACLE之FAQ -- 性能调整

    这里需要注意的是,从 Oracle 8i 开始,建议使用 `DBMS_STATS` 包而不是 `ANALYZE` 命令来收集统计信息。`DBMS_STATS` 提供了更多的选项和更准确的结果,并且支持并行处理。 #### 七、总结 性能调整是 Oracle ...

    PeopleSoft Enterprise Performance on Oracle 10G

    2. **示例DBMS_STATS命令**:例如,`DBMS_STATS.GATHER_TABLE_STATS('SCHEMA_NAME', 'TABLE_NAME')`可以收集指定模式下特定表的统计信息。 3. **数据字典表的统计信息**:数据字典表存储了数据库元数据,其统计信息...

    oracle数据查询慢如何优化.txt

    1. **定期收集表的统计信息**:可以通过`DBMS_STATS.GATHER_TABLE_STATS`函数来收集表的统计信息。 ```sql EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => USER, TABNAME => 'WWFF', ESTIMATE_PERCENT => 20, ...

    oracle公司内部培训手册

    - **Analyze Table**:这是一种传统的表分析方式,可以通过命令 `analyze table tablename compute statistics` 来收集表级、索引级和列级的统计信息。这些统计信息会被存储在特定的视图中,方便后续查询和维护。 -...

    利用Oracle索引提高“军卫一号”的运行性能.pdf

    因此,定期更新统计信息(通过`DBMS_STATS.GATHER_TABLE_STATS`等包)对于确保优化器做出正确决策至关重要。 3. **索引的维护与管理** 索引的创建和维护需要权衡空间占用和查询速度。过多的索引会增加写操作的开销...

    Apress.Cost.Based.Oracle.Fundamentals

    统计信息可以通过DBMS_STATS包手动收集,或者自动通过分析(ANALYZE)命令进行。 其次,书里会讨论不同类型的查询执行计划,比如全表扫描、索引扫描、连接方法(nested loops, merge joins, hash joins)等。每种...

    Oracle查询优化改写 技巧与案例

    使用DBMS_STATS收集表、索引和分区的统计信息,以便优化器做出正确的决策。适时执行ANALYZE命令,更新统计信息。 六、使用Hint引导优化器 Oracle的Hint机制允许我们在SQL语句中添加特定的提示,强制优化器采取特定...

    Oracle语句优化53个规则详解

    - 考虑使用DBMS_STATS包获取更精确的统计信息。 8. 查询重构 - 避免在JOIN条件中使用非索引列,这可能导致全表扫描。 - 适当使用子查询和联接,理解它们对性能的影响。 - 减少嵌套查询,尽可能使用连接(JOIN)操作...

    oracle索引失效的总结

    - 使用自动任务(`DBMS_STATS.GATHER_TABLE_STATS`)定期收集统计信息。 #### 3. Cost估算偏差 Oracle优化器会根据成本模型来决定是否使用索引。当成本估算与实际情况偏差较大时,可能会导致索引不被使用。 **解决...

    阿里巴巴DBA面试题

    定期使用ANALYZE命令或者DBMS_STATS包来更新统计信息,有助于CBO优化器制定出更准确的执行计划。对于小表,由于它们的统计信息变化不大,可以使用COMPUTE统计信息的方法。 最后,DBA在实际工作中还需要具备故障排查...

    本人使用的oracle命令集

    - `DBMS_STATS`包提供了更高级的统计信息收集功能。 9. **PL/SQL编程**: - PL/SQL是Oracle的存储过程语言,用于编写数据库程序。`DECLARE`、`BEGIN`、`END`是其基本结构。 - `PROCEDURE`和`FUNCTION`定义自定义...

    oracle查询优化改写 技巧与案例

    - 手动收集:使用`DBMS_STATS`包或`ANALYZE`命令。 - **注意事项**:定期更新统计信息,确保数据准确性。 ##### 1.3 索引优化 - **作用**:索引可以加速数据检索速度,减少I/O操作次数。 - **类型**:B树索引、...

    oracle 性能优化文章

    定期运行`DBMS_STATS`包收集表、索引和分区的统计信息,确保Oracle能够做出最佳的执行计划。 7. **数据库设计**:良好的数据库设计可以避免许多性能问题。遵循第三范式,减少冗余数据。使用合适的数据类型,避免...

Global site tag (gtag.js) - Google Analytics