Tuning the Shared pool(2)

本文通过实验展示了在SQL操作中使用绑定变量相较于使用字面量的显著性能提升,特别是针对大数据量操作时,绑定变量能有效减少解析次数,提高执行效率。同时,文章深入探讨了绑定变量对数据库缓存的影响及优化策略,包括调整库缓存大小、避免大型匿名PL/SQL块等,以进一步提升性能。此外,还对比了数据仓库环境下,不同查询方式的优劣,并引入Oracle 10g与11g的新特性result cache,阐述了其如何利用已执行查询结果来加速后续类似查询的执行。
使用绑定变量的好处的实验:
drop table m;
create table m(x int);
过程一:使用绑定变量
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
FOR i IN 1..10000
LOOP
excute immediate
'INSERT INTO m VALUES(:x)' USING 'i';
END LOOP;
END;
/
过程二:不使用绑定变量
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
excute immediate
FOR i IN 1..10000
LOOP
INSERT INTO m VALUES('||i||')'; 
END LOOP;
END;
/
SET TIMING ON 设定计时器
exec proc1;
看用时
truncate table m;
exec proc2;
看用时
会发现有大差别。


Latched
Contention for shared pool latch and library cache 


latch indicates one or more of the following:
* Unshared SQL
* Reparsed sharable SQL
* Avoid invalidations that induce reparsing.


Tuning Library Cache
1.Reserving space for large memory requirements.
2.Pining frequently required large objects.
3.避免large anonymous PL/SQL blocks.
4.Enabling the use of large pool for Oracle Shared 


Server connections.


desc v$librarycache
联机文档看v$librarycache
看这个视图能计算出library cache的命中率,如果不满意可


以采取进一步措施。
Gets(parse)
Pins(Execution)
Reloads(Parse)
Invalidations(Parse)


Diagnostic Tools
视图
v$sgastat
v$librarycache
v$sql
v$sqltext
v$db_object_cache


参数
shared_pool_size,open_cursors,session_cached_cursors,
cursor_space_for_time,cursor_sharing,shared_pool_reser


ved_size


在数据仓库反而使用字面值比绑定变量好。
select * from t where id=123;
那能给优化器更明显的提示,让优化器能给出更好的执行计划


。因为数据仓库本来就是低并发,高资源消耗的SQL。


10g与11g还有新特性,result cache,即别人执行过的结果,


直接拿来用,连执行都不用执行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值