oracle 优化学习笔记_绑定变量

文章目录

  • 1.作用
  • 2.用法
    • 2.1 sql文本中使用
    • 2.2 PL/SQL中使用
  • 3.使用原则
  • 4.绑定变量窥探

1.作用

绑定变量是一种特殊类型的变量,又被称为占位符。
有效降低系统硬解析的数量。–OLTP

2.用法

2.1 sql文本中使用

SCOTT@regan> var x number;
SCOTT@regan> exec :x :=7369;

PL/SQL procedure successfully completed.

SCOTT@regan> select ename from emp where empno = :x;

ENAME
----------
SMITH

2.2 PL/SQL中使用

语法:execute immediate [带绑定变量的sql] using [绑定变量的值]

SCOTT@regan> declare
  2   vc_name varchar2(10);
  3  begin
  4   execute immediate 'select ename from emp where empno = :1' into vc_name using 7369;
  5   dbms_output.put_line(vc_name);
  6  end;
  7  /
SMITH

PL/SQL procedure successfully completed.

3.使用原则

依据应用系统的类型来决定是否使用绑定变量,即:

  • OLAP/DSS系统,可以不使用
  • OLTP系统,一定要使用,并最好使用批量绑定
  • OLTP和OLAP混合的系统,如有循环,循环内部一定要使用绑定变量,并最好是批量绑定;循环外可以不使用

4.绑定变量窥探

9i中引入,通过参数_optim_peek_user_binds控制,默认为TRUE。

关闭:
alter system set "_optim_peek_user_binds"=false  scope=spfile; 

使sql硬解析的方式:

  • 对目标sql中锁涉及的表执行ddl操作,如comment,grant等
  • DBMS_SHARED_POOL.PURGE

你可能感兴趣的:(tuning)