易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle性能提高 批量绑定

author:skatetime:2010-05-04
在我们的系统里,大家在写pl/sql时,处理多条记录时,几乎都是通过游标来完成的,这样是非常影响性能的。我们可以用批量绑定可以大大的改善。
 
批量绑定是oracle9i增加的特性,是指执行单次sql操作能传递所有集合元素的数据。通过绑定绑定变量可以极大的提高数据处理速度,提高应用程序的速度。批处理可以用与select,update,delete,insert语句上进行批量数据的处理。
 
在我们写pl/sql的时候,oracle会为select和dml语句分配上下文区(这个步骤是非常耗资源的,oracle对于太频繁的切换,都换用其它方式代替,例如spin),游标就是上下文区的指针。所以在我们日常coding时,尽量少用cursor,虽然cursor使用很简单,但也带来很大的性能问题,我们现在系统里的游标就非常多。
批量绑定是使用bulk collect和forall语句来完成的。
 
bulk collect:用与取得批量数据,只能用户,select,fetch和dml返回字句
forall:适用于批量的dml
下面简单介绍下使用批量绑定和不使用批量绑定的性能对比的样例,一共两个例子:
测试表:
create table TESTA
(
  ID   NUMBER(6) primary key not null ,
  NAME VARCHAR2(10)
)
**********************************************************************************
例子1:
Forall:
使用批量绑定:
SQL> declare
  2   type id_table_type is table of number(6) index by binary_integer;
  3   type name_table_type is table of varchar2(10) index by binary_integer;
  4 
  5   id_table id_table_type;
  6   name_table name_table_type;
  7   start_time  number(10);
  8   end_time number(10);
  9 
 10  begin
 11 
 12  for i in 1..5000  loop
 13     id_table(i):=i;
 14     name_table(i):='name'||to_char(i);
 15  end loop;
 16 
 17  start_time:=dbms_utility.get_time;
 18  for i in 1..id_table.count loop
 19   insert into testa values(id_table(i),id_table(i))  ;
 20  e


相关文档:

ORACLE体系结构 内存结构

ORACLE数据库启动时分配一大块非常大的内存区域。ORACLE运行过程中所有的操作都在这里进行。
ORACLE内存=SGA+PGA。
SGA=数据高速缓冲区+日志缓冲区+共享池+大池+Java池。
数据高速缓冲区:数据高速缓冲区是最近从数据文件中检索出来的数据,缓存起来供所有用户共享。
日志缓冲区:缓存用户对数据库执行的各类操作的重做 ......

ORACLE体系结构 ORACLE进程简介

在ORACLE实例启动时除了分配一块很大区域的内存外,还会启动一系列的进程。Oracle中的进程有哪些特点?
ORACLE进程可以分为用户进程、服务器进程、后台进程。
用户进程:用户连接数据库时会创建一个用户进程,该进程用于和服务器进行会话,向数据库服务器发生请求,接收数据库的响应。
服务器进程:由ORACLE数据库服务器 ......

Oracle中Cursor介绍和使用

一  概念
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。
二&n ......

oracle 游标

1.       游标: 容器,存储SQL语句影响行数。
2.       游标类型: 隐式游标,显示游标,REF游标。其中,隐式游标和显示游标属于静态游标(运行前将游标与SQL语句关联),REF游标属于动态游标(运行时将游标与SQL语句关联)。
3.      ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号