前言
- 針對(duì)索引列,尤其是存在嚴(yán)重?cái)?shù)據(jù)傾斜的索引列,直方圖的統(tǒng)計(jì)信息,對(duì)于CBO優(yōu)化器更準(zhǔn)確地選擇執(zhí)行計(jì)劃至關(guān)重要。
- 對(duì)于初心者,可以從這篇文章中,了解到直方圖對(duì)于索引列的價(jià)值、作用,以及使用技巧。
- 對(duì)于經(jīng)驗(yàn)者,同樣可以從文章中,了解到不同的analyze table操作,對(duì)于直方圖信息統(tǒng)計(jì)的影響。該部分也可以直接查閱本篇文章最后的總結(jié)篇。
-
先強(qiáng)調(diào)一句:analyze table table_name compute statistics這個(gè)操作要謹(jǐn)慎!
1、直方圖概述
- 直方圖作為一種計(jì)量數(shù)據(jù)分布的統(tǒng)計(jì)工具,并非ORACLE專(zhuān)有。
- 對(duì)于ORACLE而言,直方圖主要用于在分析表以及索引時(shí),統(tǒng)計(jì)相關(guān)列上的數(shù)據(jù),記錄該列整體的數(shù)據(jù)分布情況。
2、直方圖的分類(lèi)
- ORACLE的直方圖主要有兩種,等頻直方圖以及等高直方圖
- 默認(rèn)情況下,當(dāng)列上的唯一值數(shù)量低于254個(gè),ORACLE會(huì)建立等頻直方圖。
- 默認(rèn)情況下,當(dāng)列上的唯一值數(shù)量高于254個(gè),ORACLE會(huì)建立等高直方圖。
- 可以在執(zhí)行dbms_stats.gather_table_stats收集統(tǒng)計(jì)信息時(shí),通過(guò)method_opt參數(shù),設(shè)置SIZE低于目標(biāo)列的唯一值數(shù)量,從而使用等高直方圖。
3、直方圖的優(yōu)勢(shì)
對(duì)于ORACLE而言,CBO優(yōu)化器可以根據(jù)直方圖收集的列值分布信息,讓選擇性高(返回?cái)?shù)據(jù)行比例少)的列值使用索引,而選擇性低(返回?cái)?shù)據(jù)行比例多)的列值不使用索引。尤其對(duì)于存在數(shù)據(jù)傾斜嚴(yán)重的列而言,直方圖很重要。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26