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语句
- 可以并行进行,对多个用户,多个Table
- 可以得到整个分区表的数据和单个分区的数据。
- 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
- 可以倒出统计信息
- 可以用户自动收集统计信息
二、DBMS_STATS的缺点
- 不能Validate Structure
- 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
- DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
三、对于oracle 9版本后面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。
- 大小: 12.1 KB
- 大小: 11.6 KB
分享到:
相关推荐
DBMS_UTILITY包提供了一系列实用函数,如分析SQL语句(ANALYZE_STATEMENT)、格式化输出PL/SQL块(FORMAT_SOURCE)以及获取数据库版本信息(GET_VERSION)。这个包对于调试和优化PL/SQL代码非常有用。 二、DBMS_...
Oracle数据库系统提供了丰富的功能,其中包括各种内置函数和存储过程,这些工具对于数据库管理和开发工作至关重要。本文主要聚焦于两个核心组件:`DBMS_OUTPUT`包和`DBMS_JOB`包,详细阐述它们的作用、用法及其相关...
### Oracle运维最佳实践知识点梳理 #### 一、概述 **Oracle运维最佳实践**是一套针对Oracle数据库维护和管理的专业指南,旨在帮助运维人员提升数据库的性能、稳定性和安全性。... - 使用`DBMS_ADVISOR.ANALYZE_ADM...
4.4 镜像和复用的区别 4.5 为高可用性选择磁盘类型 4.6 常规的 RAID 技巧 4.7 给控制文件增长的空间 4.8 如何配置日志组 4.9 保护 SYSTEM 表空间的三种简单 方法 4.10 为什么必须保护 ORACLE_HOME 4.11 保护...
这里需要注意的是,从 Oracle 8i 开始,建议使用 `DBMS_STATS` 包而不是 `ANALYZE` 命令来收集统计信息。`DBMS_STATS` 提供了更多的选项和更准确的结果,并且支持并行处理。 #### 七、总结 性能调整是 Oracle ...
2. **示例DBMS_STATS命令**:例如,`DBMS_STATS.GATHER_TABLE_STATS('SCHEMA_NAME', 'TABLE_NAME')`可以收集指定模式下特定表的统计信息。 3. **数据字典表的统计信息**:数据字典表存储了数据库元数据,其统计信息...
1. **定期收集表的统计信息**:可以通过`DBMS_STATS.GATHER_TABLE_STATS`函数来收集表的统计信息。 ```sql EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => USER, TABNAME => 'WWFF', ESTIMATE_PERCENT => 20, ...
- **Analyze Table**:这是一种传统的表分析方式,可以通过命令 `analyze table tablename compute statistics` 来收集表级、索引级和列级的统计信息。这些统计信息会被存储在特定的视图中,方便后续查询和维护。 -...
因此,定期更新统计信息(通过`DBMS_STATS.GATHER_TABLE_STATS`等包)对于确保优化器做出正确决策至关重要。 3. **索引的维护与管理** 索引的创建和维护需要权衡空间占用和查询速度。过多的索引会增加写操作的开销...
统计信息可以通过DBMS_STATS包手动收集,或者自动通过分析(ANALYZE)命令进行。 其次,书里会讨论不同类型的查询执行计划,比如全表扫描、索引扫描、连接方法(nested loops, merge joins, hash joins)等。每种...
使用DBMS_STATS收集表、索引和分区的统计信息,以便优化器做出正确的决策。适时执行ANALYZE命令,更新统计信息。 六、使用Hint引导优化器 Oracle的Hint机制允许我们在SQL语句中添加特定的提示,强制优化器采取特定...
- 考虑使用DBMS_STATS包获取更精确的统计信息。 8. 查询重构 - 避免在JOIN条件中使用非索引列,这可能导致全表扫描。 - 适当使用子查询和联接,理解它们对性能的影响。 - 减少嵌套查询,尽可能使用连接(JOIN)操作...
- 使用自动任务(`DBMS_STATS.GATHER_TABLE_STATS`)定期收集统计信息。 #### 3. Cost估算偏差 Oracle优化器会根据成本模型来决定是否使用索引。当成本估算与实际情况偏差较大时,可能会导致索引不被使用。 **解决...
定期使用ANALYZE命令或者DBMS_STATS包来更新统计信息,有助于CBO优化器制定出更准确的执行计划。对于小表,由于它们的统计信息变化不大,可以使用COMPUTE统计信息的方法。 最后,DBA在实际工作中还需要具备故障排查...
- `DBMS_STATS`包提供了更高级的统计信息收集功能。 9. **PL/SQL编程**: - PL/SQL是Oracle的存储过程语言,用于编写数据库程序。`DECLARE`、`BEGIN`、`END`是其基本结构。 - `PROCEDURE`和`FUNCTION`定义自定义...
- 手动收集:使用`DBMS_STATS`包或`ANALYZE`命令。 - **注意事项**:定期更新统计信息,确保数据准确性。 ##### 1.3 索引优化 - **作用**:索引可以加速数据检索速度,减少I/O操作次数。 - **类型**:B树索引、...
定期运行`DBMS_STATS`包收集表、索引和分区的统计信息,确保Oracle能够做出最佳的执行计划。 7. **数据库设计**:良好的数据库设计可以避免许多性能问题。遵循第三范式,减少冗余数据。使用合适的数据类型,避免...