real-world performance学习笔记之 optimizer expose

b.gif
b.gif

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博客 ” ,链接:http://blog.itpub.net/8984272/viewspace-619906/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8984272/viewspace-619906/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值