Oracle数据倾斜问题,Oracle数据倾斜导致的问题-有绑定变量

Oracle

数据倾斜导致的问题

-

有绑定变量

参考整理---<<

恩墨年货

-SQL

与性能优化

>>

场景二:

40a7e4b962f8098b22296e6ac6d408eb.gif

在上一节实验可以知道,没有

绑定变量

时,数据倾斜问题在特定场景下可以用直方图解决,那么在有绑定变量情况下,数据倾斜问题单凭直方图可以解决吗?

显然是不能的,

Oracle

绑定变量

技术解决了SQL

语句硬解析过多的问题,降低了资源的争用。但是绑定变量在引入

cursor sharing

,增加了软解析的同时,

由于SQL

文本相同,经常生成相同的执行计划,在数据分布不均匀,数据倾斜严重时,有时会出现性能问题。

在oracle 9i

版本,引入了

绑定变量窥探Bind Peeking

技术,在首次硬解析时,会去探测绑定变量的真实值,从而生成更准确的执行计划,但是从第二次软解析开始,一直会沿用之前的执行计划,而一个执行计划并不会适用所有的绑定值,在过滤列数据分布严重倾斜时,可能会生成低效的执行计划。

为了弥补绑定变量窥探Bind Peeking

技术的缺陷,

11g

引入了

自适应游标共享技术(Adaptive Cursor Sharing)

,通过自适应游标共享,可以仅针对使用绑定变量的语句智能地共享游标。

一:绑定变量窥探Bind Peeking

对执行计划的影响

一:绑定变量窥探Bind Peeking

对执行计划的影响

1

查看

Bind Peeking

Adaptive Cursor Sharing

参数

select

name

,

value

from

(

select

nam.ksppinm

name

,

val.KSPPSTVL

value

,

--nam.ksppdesc description,

val.ksppstdf isdefault

from

sys.x$ksppi nam

,

sys.x$ksppcv val

where

nam.inst_id

=

val.inst_id

and

nam.indx

=

val.indx

)

where

name

in

(

'_optimizer_adaptive_cursor_sharing'

,

'_optimizer_extended_cursor_sharing_rel'

,

'_optimizer_extended_cursor_sharing'

,

'_optim_peek_user_binds'

);

e55de5ac187be9b1da7cf0393e38c61e.png

2

创建测试数据

SQL> select banner_full from v$version;

BANNER_FULL

--------------------------------------------------------------------------------

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - P

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值