oracle統計資訊和直方圖

jolly10發表於2009-06-01
oracle統計資訊和直方圖的理解[@more@]以前一直對統計資訊的理解就是對行的資料分佈的,提供改CBO來選擇高效的執行計劃。這段時間看了不少資料,對統計有了一個更清晰的認識

統計資訊:

1,表中的統計資訊

2,索引列的統計資訊

3,一般列的統計資訊

表的統計資訊:1,錶行數,使用的塊數,空的塊數,塊的使用率,行遷移和連結的數量,pctfree,pctused的資料,行的平均大小


Code highlighting produced by Actipro CodeHighlighter (freeware)


--&gtselect NUM_ROWS, --表中的記錄數
BLOCKS, --表中資料所佔的資料塊數
EMPTY_BLOCKS, --表中的空塊數
AVG_SPACE, --資料塊中平均的使用空間
CHAIN_CNT, --表中行連線和行遷移的數量
AVG_ROW_LEN --每條記錄的平均長度
from user_tables

索引列的統計資訊 1,索引的深度(B-Tree的級別),索引葉級的塊數量,叢集因子(clustering_factor), 唯一值的個數


Code highlighting produced by Actipro CodeHighlighter (freeware)


--&gtselect BLEVEL, --索引的層數
LEAF_BLOCKS, --葉子結點的個數
DISTINCT_KEYS, --唯一值的個數
AVG_LEAF_BLOCKS_PER_KEY, --每個KEY的平均葉塊個數
AVG_DATA_BLOCKS_PER_KEY, --每個KEY的平均資料塊個數
CLUSTERING_FACTOR --群集因子
from user_indexes

列的統計資訊 1,唯一的值個數,列最大小值,密度(選擇率),資料分佈(直方圖資訊),NUll值個數


Code highlighting produced by Actipro CodeHighlighter (freeware)


--&gtselect NUM_DISTINCT, --唯一值的個數
LOW_VALUE, --列上的最小值
HIGH_VALUE, --列上的最大值
DENSITY, --選擇率因子(密度)
NUM_NULLS, --空值的個數
NUM_BUCKETS, --直方圖的BUCKET個數
HISTOGRAM --直方圖的型別
from user_tab_columns

直方圖:是統計資訊一種,對資料分佈的統計,目的是為了更精確的得到選擇率和基數,CBO才能估計出最優的執行計劃。

上一篇我們知道了統計資訊在:表,列,索引上能夠獲取的統計資訊,但如果有一個sql:

select * from table where x=1;(在x列上有索引)

那Oracle如何選擇是表掃描,索引查詢資料,透過對列列的統計資訊,但沒有直方圖,CBO最佳化器不知道x=1的資料有多少?無法提供資料參考。有兩鍾情況:

table表中:1,x=1的資料比如就一條 CBO最佳化器:應該索引查詢

2,x=1的資料有很多條,CBO最佳化器:這時應該表掃描

如果索引列沒有直方圖,索引上有最大,最小值,總行數,那就不能知道x=1在表中大概有多少行。如果只是有索引上統計資訊,就無法獲取大概的資料分佈

CBO也就得不到正確的結果。

對於資料分佈均勻的列,直方圖沒意義,對應列中資料分佈比較傾斜的列(不均勻),直方圖就非常有用。CBO就可以估計大概的資料分佈,計算查詢的選擇率和基數也更精確。

所以直方圖有兩種:1,高度均衡直方圖 2,頻率直方圖

高度均衡直方圖: 資料分佈不均勻 ,由於列中資料很多,這時資料比較密集,不利於分析和評估,這時直方圖需要均衡化。

頻率直方圖:就是資料分佈很均勻,

得到的直方圖:資訊的準確性就由兩個數值決定,一個是bucket的個數,一個NUM_DISTINCT的個數。

一般來說,bucket的資料越多,關於列資料分佈的資訊就越正確,但統計直方圖的花費的時間和資源就多,oracle中bucket的最大254個,預設是75個。而SQL Server預設是200個。

在oracle中要刪除直方圖資訊就是設定bucket的資料為1,如下:

Analyze table 表 compute statistics for table for columns id size 1;

exec dbms_stats.gather_table_stats('使用者', '表',cascade=>false, method_opt=>'for columns 列 size 1');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1022681/,如需轉載,請註明出處,否則將追究法律責任。

相關文章