ORACLE数据表分析


本文整理自网络,侵删。

一、性能数据的存储过程:

性能数据的收集包含这样几个存储过程:

GATHER_INDEX_STATS:分析索引信息 
GATHER_TABLE_STATS:分析表信息,当cascade为true时,分析表、列(索引)信息 
GATHER_SCHEMA_STATS:分析方案信息 
GATHER_DATABASE_STATS:分析数据库信息 
GATHER_SYSTEM_STATS:分析系统信息

二、GATHER_TABLE_STATS: 分析表、字段和索引:

我们分析时最常用到的就是GATHER_TABLE_STATS,dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。

procedure gather_table_stats
    (ownname varchar2, tabname varchar2, partname varchar2 default null,
     estimate_percent number default DEFAULT_ESTIMATE_PERCENT,
     block_sample boolean default FALSE,
     method_opt varchar2 default DEFAULT_METHOD_OPT,
     degree number default to_degree_type(get_param('DEGREE')),
     granularity varchar2 default  DEFAULT_GRANULARITY,
     cascade boolean default DEFAULT_CASCADE,
     stattab varchar2 default null, statid varchar2 default null,
     statown varchar2 default null,
     no_invalidate boolean default
       to_no_invalidate_type(get_param('NO_INVALIDATE')),
     stattype varchar2 default 'DATA',
     force boolean default FALSE,
     -- the context is intended for internal use only.
     context dbms_stats.CContext default null);

method_opt:决定histograms直方图信息是怎样被统计的。method_opt的取值如下(默认值为FOR ALL COLUMNS SIZE AUTO):

  • FOR ALL COLUMNS:统计所有列的HISTOGRAMS.
  • FOR ALL INDEXED COLUMNS:统计所有INDEXED列的HISTOGRAMS.
  • FOR ALL HIDDEN COLUMNS:统计你看不到列的HISTOGRAMS
  • FOR COLUMNS <LIST> SIZE <INTEGER> | REPEAT | AUTO |
  • INTEGER指的直方图的BUCKETS数量,取值范围为[1,254]。
  • REPEAT上次统计过的HISTOGRAMS。
  • AUTO:ORACLE根据列数据的分布及相关列的访问量来决定收集直方图的列。
  • SKEWONLY:ORACLE 根据列的数据分布来决定哪些列收集直方图

在 gather_table_stats 存储过程的所有参数中,除了 ownname 和 tabname,其他的参数都有默认值。

dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'T1');

三、DBMS_STATS 包管理功能

1、查找表最后执行分析的日期

select table_name,num_rows,blocks,last_analyzed from all_tables where table_name='WORK_LIST';

2、其他存储过程

  • CREATE_STAT_TABLE :创建分析数据表
  • DROP_STAT_TABLE: 删除分析数据表
  • GATHER_TABLE_STATS:执行分析表
  • GET_TABLE_STATS :获取分析数据
  • SET_TABLE_STATS : 设置分析数据
  • EXPORT_TABLE_STATS: 导出分析数据
  • IMPORT_TABLE_STATS: 导入分析数据
  • LOCK_TABLE_STATS :锁定分析数据
  • UNLOCK_TABLE_STATS :解锁分析数据
  • RESTORE_TABLE_STATS: 恢复分析数据
  • delete_table_stats :删除表统计信息

四、自动收集CBO的统计信息

从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。

阅读剩余部分

相关阅读 >>

linux环境下oracle安装参数设置方法详解

oracle 索引组织表的深入详解

java下使用oracle存储过程(详解)

oracle中多表查询如何使用natural join使用方法?

oracle 数据库特殊查询总结

在window操作系统上安装oracle10g图文教程

如何向mysql数据库或者oracle或导入表格文件

oracle密码忘记怎么办?

oracle怎么修改字段名称?

oracle三种循环(for、while、loop)实现九九乘法表

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...