oracle統計資訊和直方圖
統計資訊:
1,表中的統計資訊
2,索引列的統計資訊
3,一般列的統計資訊
表的統計資訊:1,錶行數,使用的塊數,空的塊數,塊的使用率,行遷移和連結的數量,pctfree,pctused的資料,行的平均大小
Code highlighting produced by Actipro CodeHighlighter (freeware)
-->select 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)
-->select 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)
-->select 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉] oracle統計資訊(statistics)和直方圖(histogram)Oracle直方圖Histogram
- oracle統計資訊--直方圖的收集:Oracle直方圖
- Oracle直方圖統計資訊的應用Oracle直方圖
- Oracle的自動統計資訊不收集直方圖的資訊Oracle直方圖
- 關於列的直方圖統計資訊直方圖
- 收集資料庫統計資訊需要收集直方圖資訊.資料庫直方圖
- 收集直方圖及檢視直方圖資訊直方圖
- oracle 直方圖Oracle直方圖
- oracle直方圖使用Oracle直方圖
- Oracle直方圖解析Oracle直方圖圖解
- Oracle直方圖詳解Oracle直方圖
- Oracle多列統計資訊與直方圖對有關聯多列查詢影響Oracle直方圖
- Oracle資料遷移後由列的直方圖統計資訊引起的執行計劃異常Oracle直方圖
- oracle直方圖筆記-轉Oracle直方圖筆記
- (轉)Oracle直方圖詳解Oracle直方圖
- Oracle直方圖詳解(ZT)Oracle直方圖
- dba_histograms等高直方圖和等頻直方圖的理解Histogram直方圖
- 微課sql最佳化(7)、統計資訊收集(5)-關於直方圖SQL直方圖
- 直方圖直方圖
- oracle直方圖histogram小記(一)Oracle直方圖Histogram
- 轉貼oracle直方圖histogram(二)Oracle直方圖Histogram
- 【效能優化】Oracle直方圖解析優化Oracle直方圖圖解
- Oracle直方圖 (柱狀圖 histograms) 詳解Oracle直方圖Histogram
- 等頻直方圖,計算COST直方圖
- OpenCV計算機視覺學習(9)——影像直方圖 & 直方圖均衡化OpenCV計算機視覺直方圖
- 直方圖(histograms)直方圖Histogram
- 7.3 直方圖直方圖
- 11G,可以只刪除直方圖資訊直方圖
- Javafx-【直方圖】文字頻次統計工具 中文/英文單詞統計Java直方圖
- Oracle直方圖 32位元組限制Oracle直方圖
- 在收集統計資訊時指定method_opt=>.. size auto 時,有可能不收集直方圖直方圖
- 直方圖均衡化直方圖
- 04:垂直直方圖直方圖
- 直方圖學習直方圖
- [zt] Histograms - 直方圖Histogram直方圖
- 【統計資訊】Oracle統計資訊Oracle
- ORACLE的直方圖的一些試驗Oracle直方圖
- [20170615]直方圖-高度直方圖(11g).txt直方圖