使用绑定变量的好处的实验:
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,即别人执行过的结果,
直接拿来用,连执行都不用执行了。
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,即别人执行过的结果,
直接拿来用,连执行都不用执行了。