zoukankan      html  css  js  c++  java
  • Oracle 统计信息

    Oracle数据库中的统计信息是这样一组数据:它存储在数据字典中,且从多个维度描述了Oracle数据库里对象的详细信息。 CBO会利用这些统计信息来计算目标SQL各种可能的,不同的执行路径的成本,从中选择一条成本最小的执行路径来作为目标SQL的执行计划。
    统计信息分为以下六种:
    表的统计信息
    索引的统计信息
    列的统计信息
    系统统计信息
    数据字典统计信息
    内部对象统计信息:用于描述Oracle数据库里的一些内部表(如X$系列表)的详细信息。

    收集统计信息

    通常有两种方法
    • 使用Analyze命令
    • 使用DBMS_STATS包
      表、索引、列、数据字典 的统计信息 这两种方法都可收集。 系统统计信息和系统内部对象统计信息只能使用DBMS_STATS包

    Analyze命令用法

    1. 以计算模式: analyze table abc compute statistics for table; 会扫描目标对象的所有数据,所以统计结果和实际结果相匹配。
    2. 以估算模式: analyze table abc estimate statistics sample 15 percent for table; 估算模式,估算结果和实际结果不一定完全匹配

    DBMS_STATS包用法

    • GATHER_TABLE_STATS 用于收集目标表、目标表列和目标表上的索引统计信息
    • GATHER_INDEX_STATS 用于收集指定索引的统计信息
    • GATHER_SCHEMA_STATS 用于收集指定schema下所有对象的统计信息
    • GATHER_DATABASE_STATS 用于收集全库所有对象的统计信息

    1. 估算模式 exec dbms_stats.gather_table_stats(ownname=>'scott' , tabname=>'T2' , estimate_percent=>15 , method_opt=>'FOR TABLE' , cascade=>false);

    2. 计算模式 exec dbms_stats.gather_table_stats(ownname=>'scott' , tabname=>'T2' , estimate_percent=>100, method_opt=>'FOR TABLE' , cascade=>false); 或者 exec dbms_stats.gather_table_stats(ownname=>'scott' , tabname=>'T2' , estimate_percent=>NULL, method_opt=>'FOR TABLE' , cascade=>false);

    Analyze和DBMS_STATS区别

    • Analyze命令不能正确地收集分区表的统计信息,而DBMS_STATS包却可以。
    • Analyze命令不能并行收集统计信息,而DBMS_STATS包却可以。
      DBMS_STATS包的并行收集是通过手工指定输入参数 DEGREE 来实现的,如对表 T1 并行收集统计信息,同时指定并行度为4:exec dbms_stats.gather_table_stats(ownname=>'scott' , tabname=>'T1' , estimate_percent=>NULL, method_opt=>'FOR TABLE' , cascade=>true , degree=>4);
    • DBMS_STATS包的缺陷是只能收集CBO相关统计信息,不能收集CBO无关的一些额外信息,Analyze却可以。



  • 相关阅读:
    linux 实现一列数据的求和、累积求和、及1/2求和
    linux系统中如何删除某些文件或者某一类以外的所有文件
    linux系统中查看系统内核、发行版本信息
    linux系统中如何将当前目录下的文件从大到小排序和从小到大排序
    c语言中float关键字和double关键字的区别
    linux 系统如何给软件设置环境变量
    使用detectRUNS包进行ROH检测,计算近交系数实践
    诸城模拟赛 dvd的逆序对
    codevs1316 文化之旅
    codevs2800 送外卖
  • 原文地址:https://www.cnblogs.com/wfy-it/p/10089658.html
Copyright © 2011-2022 走看看