Oracle提升速度例子详解

最慢的速度:

create or replace procedure proc1

as

begin

for i in 1..100000

loop

execute immediate

'insert into t values('||i||')';

commit;

end loop;

end;

提升的速度:

create or replace procedure proc2

as

begin

for i in 1..100000

loop

execute immediate

'insert into t values(:x)' using i;

commit;

end loop;

end;

语句被绑定变量,解析次数变少。

下面是静态改写,汽车速度:

create or replace procedure proc3

as

begin

for i in 1.. 100000

loop

insert into t values(i);

commit;

end loop;

end;

下面做批量提交:

create or replace procedure proc4

as

begin

for i in 1..100000

loop

insert into t values(i);

end loop;

commit;

end;

一条一条插曲语句变成一个集合概念,整批写在DATA BUFFER区里,再刷到磁盘中。

insert into t select rownum from dual connect by level <= 100000;

直接路径读写方式的缺点在于由于数据不经过数据缓存区,所以在数据缓存区中一定读不到这些

数据,因此一定会有物理读。在海量数据面前,一般选择直接路径读写的方式来完成海量数据插入。


并行设置:

set timing on

create table t nologging parallel 64

as select rownum  from dual connect by level <= 10000000;

并行最大的特点是占用了大多数CPU的资源。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值