| 调整Oracle应用系统性能的原则和方法 |
| 时间:2007-8-6 20:11:09,点击:0 |
在应用程序中实现:
Beign Update A set lsbs='T'; Insert into B Select * from A where lsbs='T'; Delete A where lsbs='T'; End;
用数据库触发器实现:
Create trigger delete1After update of lsbs on AFor each rowInsert into Bselect * from A where :new.lsbs='T';Delete A where :new.lsbs='T';End delete1;
在应用程序中实现时,所有的SQL命令请求传送的数据都要通过网络在Client端和Server端进行交换,而不像数据库触发器一样,SQL本身在Server端,不需要通过网络传输数据。当进行操作的数据量相当大时,并且多个用户同时操作时,通过在应用程序中实现复杂的控制,必将增大网络I/O的负荷,使整个系统的性能降低,而用数据库触发器能完全避免这种情况发生。
2.3、使用存储过程、存储函数和包
Oracle的存储过程和存储函数是命名的能完成一定功能并且存储在Server端的PL/SQL的集合。包是一种把有关的过程和函数组织封装成一个数据库程序单元的方法。它们相对于应用程序的过程、函数而言,把SQL命令存储在Server端。使用存储过程和存储函数,应用程序不必再包含多个网络操作的SQL语句去执行数据库服务器操作,而是简单调用存储过程和存储函数,在网络上传输的只是调用过程的名字和输出结果,这样就可减少大量的网络I/O。
例如:基表A、B的定义:name char(20);detail char(10);A表100万记录,应用程序将从基表A中检索detail列符合给出条件的记录,并将之插入基表B。
DeclareCursor cursor1 is select*from A;poin cursor1%type;con1 number(2);res1 char(4)='abcd';Begin Insert into B values(poin.name,poin.detail);end if;For poin in cursor1 loop End loop;End loop;For con1 in 1..7 loopCommit;If substr(poin.detail ,con1,4)=res1 then End;
如果在Developer/2000 From中按钮触发器直接用PL/SQL实现和把它改写为一个Oracle存储过程,然后在From中调用此过程实现比较,后者性能显著提高。
|
|
| 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 |
|
| 【打印】【关闭】 |
|