Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1284200
  • 博文数量: 127
  • 博客积分: 2286
  • 博客等级: 大尉
  • 技术积分: 1943
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-10 10:37
文章分类

全部博文(127)

文章存档

2018年(1)

2015年(2)

2014年(1)

2013年(30)

2012年(88)

2011年(5)

分类: Oracle

2013-12-10 18:10:47

12c发布后,很多大师都在研究histogram,但文章太长,讨论了许多细节,我来做个概述:

12c中新增加了2中类型的histogram:
1 Top Frequency Histogram, Frequency histogram的改进版
NDV的值虽然超过了bucket的数量,但是所占整体比例较小,干脆忽略掉。

2 Hybrid Histogram, Hight-Balance histogram的改进版,结合了Frequency histogram的特点,故叫混合直方图
Hight-Balance理解有点困难,而且不够精确;Hybrid的基本原则是每个值最多只用一个bucket,用Frequency的方法记录repeat count, 这就需要动态调整bucket的大小(西游记里面的神袋,有多少装多少),不再是过去的固定大小了。

如果搜集统计信息的时候指定了estimate_percent(准确地说不是auto_sample_size), 则与以前一样,否则:
1 NDV < buckets,  则是Frequency histogram
2 NDV > buckets,  且top n的数据量超过标准:1-1/n,   则是Top Frequency histogram, n之外的NDV值被抛弃
3 NDV > buckets,  且Top n的数据量小于标准:1-1/n,  则是Hybrid Histogram

我也想把我以前写的脚本改进一下,初看了一下,改动很大,估计工作量不小,先看下概述吧:

至于详细的特点和选择率的计算,想研究一下,并且更新下我的脚本,由于要用到新的列,估计工作量不小,无法兼容12c以前的数据库了
[histogram一]显示histogram中列值的详细分布情况
阅读(1930) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

kerlion2013-12-11 13:56:55

昨天写的,今天就是推荐文章,版主很勤快吗!但是我更新下,就没了?