欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

No.2.1_8 Oracle 执行计划之2_统计信息(Statistic)

程序员文章站 2022-06-24 16:45:30
Oralce统计信息Statistic简介 ,收集统计信息的两种方法 DBMS_STATS ,ANALYZE...


相关链接


一、统计信息(Statistic)

  统计信息主要是描述数据库中索引的大小规模数据分布状况等的一类信息。例如,表的行数块数平均每行的大小索引的 leaf blocks索引字段的行数不同值的大小等,都属于统计信息。
  根据这些统计信息, optimizer (优化器)可以选择更好的执行计划。从 Oracle11G 开始,数据库统计信息的自动收集被整合到自动维护任务中,基本上都是默认自动执行的,也满足大多数情形下的运行需求,不过也可以手动收集。

  • 使用 gather_stats_job 自动收集是在创建数据库时自动创建的,并由调度程序进行管理。他会收集数据库中优化程序统计信息缺失或已过时的所有对象的统计信息。
  • 使用 dbms_stats 程序包手动收集收集的是系统统计信息。主要提供了搜集(gather)删除(delete)导出(export)导入(import)修改(set)统计信息的方法。说起 dbms_stats 那就有必要说说analyze 命令。
  • dbms_statsanalyze 的区别:dbms_stats 是 Oracle9i 及后续版本中用于收集统计信息的包,虽然 analyze 命令也一直可以使用,但是现在已经不推荐使用 analyze 命令来收集统计信息,而是使用 dbms_stats。两者之间有很大的不同,dbms_stats 能正确收集分区表的统计信息,也就是说能够收集 global statistic而 analyze 只能收集最低层次对象的统计信息,然后推导和汇总出高一级对象的统计信息,如果分区表只会收集分区统计信息,然后再汇总出所有分区的统计信息,得到表一级的统计信息。
  • 建议使用DBMS_STATS,Analyze 基本不用了。
  • 听说还有DBMS_DDL、DBMS_UTILITY也可以收集某些统计信息,但没有深入研究。

二、统计信息内容

统计信息存储位置(不完统计)

表的统计信息
  包含表行数,使用的块数,空的块数,块的使用率,行迁移和链接的数量,pctfree,pctused的数据,行的平均大小
索引列的统计信息
  包含索引的深度(B-Tree的级别),索引叶级的块数量,集群因子(clustering_factor), 唯一值的个数。
列的统计信息
  包含 唯一的值个数,列最大小值,密度(选择率),数据分布(直方图信息),NUll值个数

搜集的统计信息同时存储在以下三种视图下:【DBA_】 【ALL_】【USER_】

Type
种类
Description
英文描述
Translation
中文描述
StoreView
存储视图
Seri
序号
StoreColumn
存储列
表统计信息
table statistics
average row length 平均行的长度 ALL_TABLES 7 AVG_ROW_LEN
number of rows 行数量 ALL_TABLES 20 NUM_ROWS
number of blocks block数量 ALL_TABLES 21 BLOCKS
- ALL_TABLES 23 AVG_SPACE
数据块中
平均使用空间
ALL_TABLES 24 CHAIN_CNT
表中行连接
和行迁移的数量
列统计信息
column statistics
number of distinct values (ndv) in column 列中distinct的值 ALL_TAB_COLUMNS 14 NUM_DISTINCT
number of nulls in column 列中null的值 ALL_TAB_COLUMNS 18 NUM_NULLS
data distribution (histogram) 数据分布 ALL_TAB_COLUMNS 15 LOW_VALUE
列上最小值
ALL_TAB_COLUMNS 16 HIGH_VALUE
列上最大值
ALL_TAB_COLUMNS 17 DENSITY
密度
ALL_TAB_COLUMNS 19 NUM_BUCKETS
桶数
ALL_TAB_COLUMNS 26 AVG_COL_LEN
列平均字节长度
ALL_TAB_COLUMNS 31 HISTOGRAM
直方图类型
索引统计信息
index statistics
levels 叶块在B-TREE中层级 USER_INDEXES 24 BLEVEL
number of leaf blocks 叶块数量 USER_INDEXES 25 LEAF_BLOCKS
- USER_INDEXES 26 DISTINCT_KEYS
索引DISTINCT后个数
USER_INDEXES 27 AVG_LEAF_BLOCKS_PER_KEY
存放一个键值的平均叶块数
= LEAF_BLOCKS / DISTINCT_KEYS
= 25 / 26
USER_INDEXES 28 AVG_DATA_BLOCKS_PER_KEY
单个索引引用的平均数据块数
= CLUSTERING_FACTOR / DISTINCT_KEYS
= 29 / 26
clustering factor 集群因子
熵-混乱程度
USER_INDEXES 29 CLUSTERING_FACTOR
row存储的越有序,clustering factor的值越低
系统统计信息
system statistics
i/o performance and utilization io性能和利用率
cpu performance and utilization cpu的性能和利用率

20/09/14

M

本文地址:https://blog.csdn.net/qq_43529621/article/details/108576302

相关标签: # 2.1 Oracle