zoukankan      html  css  js  c++  java
  • dbms_stat与analyze的区别

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

    1. dbms_stats可以并行分析
    2. dbms_stats有自动分析的功能(alter table monitor )
    3. 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来收集信息。

  • 相关阅读:
    mysql基础知识
    项目开发步骤
    python 中的电子邮箱的操作
    django 运行python manage.py sqlall books 时报错 app has migration
    mysql报错锦集
    搭建spark中需要注意的问题
    pycharm5.0 激活方式
    python去除停用词(结巴分词下)
    Ubuntu下安装libsvm
    PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡
  • 原文地址:https://www.cnblogs.com/zyk/p/558581.html
Copyright © 2011-2022 走看看