select * from v$parameter where name = 'CACHE_POOL_SIZE';
--0代表结果集缓冲关闭,1代表结果集缓冲开启,默认是关闭
select * from v$parameter where name = 'RS_CAN_CACHE';
--0代表SQL缓冲装着,1代表SQL缓冲开启,默认是开启
select * from v$parameter where name = 'USE_PLN_POOL';
SQL缓冲区的作用
能使用静态SQL尽量使用静态SQL,如果表是动态的无法使用静态SQL,尽量使用绑定变量
--动态SQL(每运行一次就会解析一次)执行耗时11秒 521毫秒
begin
for i in 1..50000 loop
execute immediate 'insert into t_test(id,name) values('||i||','''||DBMS_RANDOM.string('A',20)||''')';
end LOOP;
commit;
end;
--动态SQL使用绑定变量,执行耗时885毫秒
begin
for i in 1..50000 loop
execute immediate 'insert into t_test(id,name) values(?,?)' using i,DBMS_RANDOM.string('A',20);
end LOOP;
commit;
end;
--静态SQL,执行耗时708毫秒
begin
for i in 1..50000 loop
insert into t_test(id,name) values(i,DBMS_RANDOM.string('A',20));
end LOOP;
commit;
end;
相关数据字典
--相关数据字典:
select * from SYS."V$CACHESQL";
select * from SYS."V$CACHEPLN";
select * from SYS."V$CACHEITEM";
select * from SYS."V$SQL_PLAN";
DM支持执行计划的清理和绑定:
select t.name, b.* from v$ifun t, SYS."V$IFUN_ARG" B
where t.name like '%SP_CLEAR_PLAN_CACHE%'
and t.id = b.id;
select count(*) from SYS."V$CACHEPLN";--清理前22827,清理后1
--不指定执行计划id,全清,高风险操作
SP_CLEAR_PLAN_CACHE();
--指定执行计划IP清理单条
SP_CLEAR_PLAN_CACHE(PLAN_ID);
字典缓冲区:DICT_BUF_SIZE
避免了频繁向磁盘请求获取系统表信息
减少系统表信息解析开销
默认值是50,读取系统表的字典信息存放在这里
select * from V$DICT_CACHE_ITEM;
select * from V$DICT_CACHE;