`
zhangpeng012310
  • 浏览: 61251 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DBMS与analyze

阅读更多
自从Oracle8.1.5引入dbms_stats包,Experts们便推荐使用dbms_stats取代analyze。 理由如下

dbms_stats可以并行分析
dbms_stats有自动分析的功能(alter table monitor )
analyze 分析统计信息的不准确some times
1,2好理解,且第2点实际上在VLDB中是最吸引人的;3以前比较模糊,看了metalink236935.1 解释,analyze在分析Partition表的时候,有时候会计算出不准确的Global statistics .

原因是,dbms_stats会实在的去分析表全局统计信息(当指定参数);而analyze是将表分区(局部)的statistics 汇总计算成表全局statistics ,可能导致误差。

如果想分析整个用户或数据库,还可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)

dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);

这是对命令与工具包的一些总结

1、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息

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

3、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。

分享到:
评论

相关推荐

    Metalink_DBMS_STATS.doc

    How to Move from ANALYZE (using DBMS_UTILITY) to DBMS_STATS Is ANALYZE on the Data Dictionary Supported (TABLES OWNED BY SYS)?

    Oracle 11g收集各种统计信息(DBMS_STAT)

    说明:本文为Oracle11g收集各种统计信息(DBMS_STAT)的简要指导手册 温馨提示:如果您发现本文...● analyze始于Oracle7,但自从Oracle8.1.5引入dbms_stats包后,Oracle便推荐使用dbms_stats取代analyze ● 官网地址 ...

    Oracle数据库管理员技术指南

    8.9.1 使用 DBMS_UTILITY.ANALYZE _SCHEMA收集统计数据 8.9.2 使用 DBMS_UTILITY.ANALYZE _DATABASE 收集统计数据 8.9.3 使用 DBMS_STATS 收集性能统计 数据 8.10 优化环境 8.10.1 怎样优化 Net8/SQL*Net ...

    关于Oracle中执行计划稳定性深入研究

    Oracle优化器有两大类,基于规则的和基于代价的。...既然是基于代价的模式,也就是说执行计划的选择是根据表、索引等定义和数据的统计信息来决定的,这个统计信息是根据analyze命令或者dbms_stats包来定期搜集的。

    Service-generated Big Data and Big Data-as-a-Service: An Overview

    warehousing and analysis systems fall short of tools to analyze this data. Due to its specific nature of Big Data, it is stored in distributed file system architectures. Hadoop and HDFS by Apache is ...

    Oracle 当前用户下所有表的记录总数

    代码如下: begin dbms_utility.analyze_schema(user,’COMPUTE’); end; select t.table_name,t.num_rows,t.blocks,t.empty_blocks from user_tables t 您可能感兴趣的文章:shell脚本操作oracle删除表空间、创建...

    最完整的Toad For Oracle使用手册

    Run Analyze Objects from the Command Line 745 Run CodeXpert from the Command Line 750 Running Actions from the Command Line 751 Run Compare Databases from Command Prompt 754 Run Compare Schemas from a...

    oracle10g课堂练习II(2)

    ANALYZE 命令 7-11 实时验证块完整性: DB_BLOCK_CHECKING 7-12 实时验证块完整性: DB_BLOCK_CHECKSUM 7-13 使用 EXP 检测损坏 7-14 使用闪回检查逻辑损坏 7-15 DBMS_REPAIR 程序包 7-16 使用 DBMS_REPAIR 7-...

    oracle10g课堂练习II(1)

    ANALYZE 命令 7-11 实时验证块完整性: DB_BLOCK_CHECKING 7-12 实时验证块完整性: DB_BLOCK_CHECKSUM 7-13 使用 EXP 检测损坏 7-14 使用闪回检查逻辑损坏 7-15 DBMS_REPAIR 程序包 7-16 使用 DBMS_REPAIR 7-...

    ORACLE重建索引总结

    使用带有coalesce参数时重建期间不需要额外空间,它只是在重建索引时将处于同一个索引分支内的叶块拼合起来,这最大限度的减少了与查询过程中相关的潜在的加锁问题,但是,coalesce选项不能用来将一个索引转移到其他...

    Oracle8i_9i数据库基础

    §9.7.1 与用户、角色与权限有关的数据字典 209 §9.7.2 查询数据字典信息 209 第十章 其它一些常见问题及技巧 212 §10.1 一些常见问题 212 §10.1.1 Oracle与2000年问题 212 §10.1.2 如何正确插入日期数据 213 §...

    oracle详解

    ANALYZE 执行转储文件中的 ANALYZE 语句 (Y) FEEDBACK 显示每 x 行 (0) 的进度 TOID_NOVALIDATE 跳过指定类型 id 的校验 FILESIZE 各转储文件的最大尺寸 RECALCULATE_STATISTICS 重新计算统计值 (N) 下列关键字仅...

    Toad 使用快速入门

    Toad 使用快速入门 目录 一.Toad功能综述 二....三....四....1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的...  要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug...

Global site tag (gtag.js) - Google Analytics