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
相关文档:
自增字段:
表atable(id,a) id需要自增 首先建立一个序列:
create sequence seq_atable minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache
有二种方式使用自增字段:
使用序列+触发器实现自增,插入语句不需要管自增字段
如:create or replace trigger trg_atable before insert on ......
数据库实例结构 事务一致性(Transactional Consistency)和基于时间点的恢复(Point-in-time Recovery) 系统元数据
top数据库实例结构
当Oracle实例启动之后,所看到的就是在服务器内存上的一个个不同内存块加上产生的与这些内存交互的后台进程。Oracle文档将这些内存结构和进程收的很详细。
由Oracle实例所占用的内存块� ......
事故原因:
1.由于误操作用hp unix 命令 rm -f datafilename 删除表空间的数据文件
2.alter tablespace tablespacenaem drop datafile datafile ;
3.drop tablespace tablespacename including content and datafiles;
上述两个步骤我用了近三个小时都没有执行完,最后导致数据库宕机。下面把我当时启动数据的后台� ......
查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;
查看当前用户的角色
SQL>select * from user_role_privs;
查看当前用户的系统� ......
1。web.config ----appSettings--
2. c#代码中
using System.Data.OracleClient;
public DataTable GetLimsTimeInSpace(string S_SAMPLE_NAME, string S_SAMPLING_P_N,Date ......