Oralce性能优化-绑定变量窥视

(1)查看Oracle SQL绑定变量方法如下:

对于绑定变量列中的特殊值或非均匀分布列上的绑定变量会造成非高效的执行计划被选择并执行。Bind Peeking只发生在硬分析的时候,即SQL被第一次执行的时候,之后的变量将不会在做peeking。
我们可以看出,Bind peeking并不能最终解决不同谓词导致选择不同执行计划的问题,它只能让SQL第一次执行的时候,执行计划选择更加准确,并不能帮助OLAP系统解决绑定变量导致执行计划选择错误的问题。这也是OLAP不应该使用绑定变量的一个原因。
更确切地说,绑定变量窥探是在SQL解析的物理阶段,查询优化器将会窥探绑定变量的值并将其作为字面量来使用。即ORACLE首次解析SQL时会将变量的真实值代入产生执行计划,后续对所有使用该绑定变量SQL语句都采用首次生存的执行计划。如此这般?那性能究竟如何?
结果是并非最佳的执行计划的使用。此问题在Oracle 11g中得以解决。

alter session set nls_date_format = ‘yyyy-mm-dd,hh24:mi:ss’; set
linesize 400 col sql_Id format a20 col name format a20 col
datatype_string format a14 col value_string format a20
–这个dusql从内存中读zhi取绑定变量值信息,dao若是不在内存中,则使用下一个sql
select sql_id,name, datatype_string, last_captured,value_string from v$sql_bind_capture where sql_id=‘dxfcacn4t4ppw’ order by
LAST_CAPTURED,POSITION;

–这个sql从awr中读取绑定变量值信息

select instance_number, sql_id,name, datatype_string, last_captured,value_string from dba_hist_sqlbind where
sql_id='fahv8x6ngrb50’order by LAST_CAPTURED,POSITION;

(2)禁用绑定变量窥视

在sql级别单独调整即可,

SELECT /+OPT_PARAM(’_optim_peek_user_binds’,‘true’)/ from dual;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值