ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【调优】CBO基础(八)

【调优】CBO基础(八)

原创 Linux操作系统 作者:yellowlee 时间:2011-12-27 19:15:47 0 删除 编辑

直方图

我们知道统计信息主要包括:

 

表的统计信息:

行数

块数

平均行长度

 

列的统计信息:

列的distinct值数

列的null

数据分布

扩展信息

 

索引的统计信息:

叶块数

高度

CF

 

系统的统计信息:

Io的性能

Cpu的性能

 

其中数据分布可以用直方图来表现

分为:高度直方图和频度直方图

 

前面已经探讨了各种类型字段的开销计算模型,也很容易看出开销模型的一些缺点,比如,如果字段上数据倾斜很严重,那么这样计算而来的开销可能不是正确的,从而导致cbo会选择不恰当的执行计划。

 

看看两种不同类型的直方图:

对于列的distinct值对于row number较小的时候,oracle生成频率直方图;而对于distinct 值较多,而没有足够的bukect来分这些值的时候,创建的就是高度直方图。一般来讲就是高度直方图。

 

可以通过analyzedbms_stats的相关语句来创建直方图:

Analyze table table_xxx  compute statistics for table for columns id size 1

 

exec dbms_stats.gather_table_stats('user_xxx', 'table_xxx',cascade=>false, method_opt=>'for columns col_xxx size 1');

 

可以测试一下直方图的效果,数据倾斜比较严重的情况,比较有用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16179598/viewspace-714030/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-27

  • 博文量
    316
  • 访问量
    654967