ITPub博客

首页 > Linux操作系统 > Linux操作系统 > real-world performance学习笔记之 optimizer expose

real-world performance学习笔记之 optimizer expose

原创 Linux操作系统 作者:棉花糖ONE 时间:2009-11-18 08:40:56 0 删除 编辑

1.Data skew

cbo默认是按照平均的方式来评估card,当数据倾斜的时候,默认的评估

方式存在问题,因此oracle引入了直方图来解决这个问题

2.bind peeking

oracle 9i中引入bind peeking,对于等值查询,如果查询字段存在直方图的情况下,

当第一次解析的时候,oracle将会做bind peeking,oracle用具体绑定变量的值代入

生成执行计划,就像没使用绑定变量一样,但是以后的执行计划都是重用第一次的,

因此当data skew的时候,bind  peeking就会存在问题,因此bind peeking带来的坏处

比好处多,11g引入自适应游标共享来解决这个问题.

bind peeking控制参数_optim_peek_user_binds

3.column low/high values

列的最大值和最小值当收集统计信息的时候设置method_opt=>for columns .. size 1

的时候收集,列的最大值用于评估范围查询情况的cost 和cardinality,当查询的范围超过

最大值或者最小值的时候容易导致cardinality为1,因此不准确的最大值和最小值容易

导致oracle选择错误的执行计划.

解决方法:

a.及时的收集统计信息

b.手工调整最大值和最小值

c.使用动态采样(对于超大表一般没什么作用)

4.data correlation

oracle在评估多列谓词的时候,默认是按照谓词独立来评估的,比如(a=1 and b=2),在计算选择

性的时候是按照(selectility(a)*selectility(b)),在11g以前oracle的统计信息里只会包含一个字段

的信息,无法识别组合列的信息,因此存在列存在相关性的时候,oracle无法准确的评估cardinality的值,容易导致错误的执行计划,解决方法:

a.hint

b.动态采样level设置为4以上

c.11g收集组合列的统计信息

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

上一篇: 手工创建数据库
请登录后发表评论 登录
全部评论

注册时间:2009-11-17

  • 博文量
    19
  • 访问量
    72273