zoukankan      html  css  js  c++  java
  • oracle表分析

    analyze table tablename compute statistics;
    analyze index indexname compute statistics;

    对于使用CBO很有好处,可以使用更可靠的table信息,从而执行计划也可以更准确一些,在10g会自动analyze,之前的版本需要手动定期

    生成统计信息,,选择合理的执行计划..

    一、     表分析概念

    1.  简单的说,就是收集表和索引的信息,CBO根据这些信息决定SQL最佳的执行路径。通过对表的分析,可以产生一些统计信息,通过这些信息oracle的优化程序可以优化。

    1)     收集统计信息的目的是为了使基于 CBO的执行计划更加准确。

    2)     分析的结果数据[all_tables]有什么用,要看Oracle初始化参数 optimal_mode 怎么设置的。

    3)     分析更新表的统计信息,,有可能导致执行计划改变

    2.  用analyze或dbms_stats包做统计表的的分析,分析可以判断表的使用情况,比如行迁移情况、表的资料量情况等,如:

    1)     select * from all_tables where table_name='TEMP_TABLE';(表名一定要大写)

    如果对该表没有做过统计分析,则查询的大部分栏位值都为空

    2)     analyze table tableName compute statistics;

    执行时间与表的数据量有关

    3)     select * from all_tables where table_name=' TEMP_TABLE ';

    之前为空的部分字段,现在查询已经有值

    3.  oracle的联机文档描述了analyze的做用:

    Use the ANALYZE statement to collect non-optimizer statistics, for example, to:

    --使用analyze功能可以收集一些没有进行优化的统计信息,例如:

    Collect or delete statistics about an index or index partition, table or table partition,

    --聚集或删除索引或索引分区,表或表分区

    index-organized table, cluster, or scalar object attribute.

    --索引表,串,或游标的目标属性等统计信息

    Validate the structure of an index or index partition, table or table partition, index-organized table,

    --增加下列结构的有效性:索引或索引分区,表或表分区,索引表

    cluster, or object reference (REF).

    --串,目标参照

    Identify migrated and chained rows of a table or cluster.

    --鉴别一个表或串中已经被移动的抑或被锁住的列。

    4.  dbms_stats包的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。

    5.  带有ESTIMATE选项的ANALYZE操作对于一 些表能够产生不正确的结果,尤其是那些取样较小的表。这不是个BUG,而是每个统计取样方法的特性。如果所选取样不能代表整个数据集,你就不能期 待产生正确的统计。

    6.  统计分析,在Oracle 10G中能够保存列值的分布信息

    7. 在考虑表分析时,需要考虑如下问题:

    1)     对一个带索引的表的ANALYZE,将分析其相关索引。

    2)     如果你对一个表进行ANALYZE ... ESTIMATE 分析,那么然后在其相关索引上做ANALYZE COMPUTE分析是很明智的。这样可以确保被索引字段的统计是准确的。

    3)     分析索引不用到临时表空间

    4)     如果分析一个索引而不分析其基表,在这一单一基础上CBO不会被选中如果你需要使用ESTIMATE- 估计(例如,由于时间的限制),建议你在几个不同的取样大小上进行 ANALYZE ... ESTIMATE, 来 确定每个对象的理想的取样大小。总的目标是找到一个能在最短的时间内产生准确的统计的取样大小。较好的开始点是 10% - 15%

    5)     进行超过50%的ANALYZE ... ESTIMATE 就会导致/变成ANALYZE ... COMPUTE。

  • 相关阅读:
    CODING x 百果园 _ 水果零售龙头迈出 DevOps 体系建设第一步
    Nocalhost 亮相 CD Foundation 国内首届 Meetup,Keith Chan 将出席致辞
    做云原生时代标准化工具,实现高效云上研发工作流
    打造数字化软件工厂 —— 一站式 DevOps 平台全景解读
    WePack —— 助力企业渐进式 DevOps 转型
    CODING Compass —— 打造行云流水般的软件工厂
    Nocalhost —— 让云原生开发回归原始而又简单
    CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全
    Nocalhost:云原生开发新体验
    使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller
  • 原文地址:https://www.cnblogs.com/zmlctt/p/4004212.html
Copyright © 2011-2022 走看看