前言
- 针对索引列,尤其是存在严重数据倾斜的索引列,直方图的统计信息,对于CBO优化器更准确地选择执行计划至关重要。
- 对于初心者,可以从这篇文章中,了解到直方图对于索引列的价值、作用,以及使用技巧。
- 对于经验者,同样可以从文章中,了解到不同的analyze table操作,对于直方图信息统计的影响。该部分也可以直接查阅本篇文章最后的总结篇。
-
先强调一句:analyze table table_name compute statistics这个操作要谨慎!
1、直方图概述
- 直方图作为一种计量数据分布的统计工具,并非ORACLE专有。
- 对于ORACLE而言,直方图主要用于在分析表以及索引时,统计相关列上的数据,记录该列整体的数据分布情况。
2、直方图的分类
- ORACLE的直方图主要有两种,等频直方图以及等高直方图
- 默认情况下,当列上的唯一值数量低于254个,ORACLE会建立等频直方图。
- 默认情况下,当列上的唯一值数量高于254个,ORACLE会建立等高直方图。
- 可以在执行dbms_stats.gather_table_stats收集统计信息时,通过method_opt参数,设置SIZE低于目标列的唯一值数量,从而使用等高直方图。
3、直方图的优势
对于ORACLE而言,CBO优化器可以根据直方图收集的列值分布信息,让选择性高(返回数据行比例少)的列值使用索引,而选择性低(返回数据行比例多)的列值不使用索引。尤其对于存在数据倾斜严重的列而言,直方图很重要。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式