小议Oracle 11g的自治事务(六)(1)

日期: 2008-08-11 作者:杨廷琨 来源:TechTarget中国 英文

  自治事务提供了很方便的事务控制功能,使得用户可以在不影响当前事务的情况下,提交或回滚对数据库的修改。那么Oracle为了实现这个功能是否付出了很多的代价呢,下面对比一下自治事务和普通事务的统计信息:







SQL> create GLOBAL TEMPORARY TABLE T_SESSION_STAT 
  2 (ID NUMBER, NAME VARchar2(100), VALUE NUMBER) 
  3 ON COMMIT PRESERVE ROWS; 


  表已创建。 







SQL> create TABLE T_RECORD (ID NUMBER, NAME VARchar2(30)); 

  表已创建。  






SQL> create OR REPLACE PROCEDURE P_TEST AS 
  2 BEGIN 
  3 insert INTO T_RECORD VALUES (1, ’TEST’); 
  4 COMMIT; 
  5 END; 
  6 / 

  过程已创建。 







SQL> create OR REPLACE PROCEDURE P_TEST_AUTO AS 
  2 PRAGMA AUTONOMOUS_TRANSACTION; 
  3 BEGIN 
  4 insert INTO T_RECORD VALUES (2, ’TEST’); 
  5 COMMIT; 
  6 END; 
  7 / 

  过程已创建。 







SQL> SET SERVEROUT OFF 
  SQL> BEGIN 
  2 
  3 insert INTO T_SESSION_STAT select 1, NAME, VALUE 
  4 FROM V$SESSTAT A, V$STATNAME B 
  5 where A.STATISTIC# = B.STATISTIC# 
  6 AND A.SID = (select SID FROM V$MYSTAT where ROWNUM = 1); 
  7 
  8 P_TEST; 
  9 
  10 insert INTO T_SESSION_STAT select 2, NAME, VALUE 
  11 FROM V$SESSTAT A, V$STATNAME B 
  12 where A.STATISTIC# = B.STATISTIC# 
  13 AND A.SID = (select SID FROM V$MYSTAT where ROWNUM = 1); 
  14 
  15 P_TEST_AUTO; 
  16 
  17 insert INTO T_SESSION_STAT select 3, NAME, VALUE 
  18 FROM V$SESSTAT A, V$STATNAME B 
  19 where A.STATISTIC# = B.STATISTIC# 
  20 AND A.SID = (select SID FROM V$MYSTAT where ROWNUM = 1); 
  21 
  22 FOR C IN 
  23 ( 
  24 select * 
  25 FROM 
  26 ( 
  27 select A.NAME, C.VALUE + A.VALUE – 2 * B.VALUE VALUE 
  28 FROM 
  29 T_SESSION_STAT A, 
  30 T_SESSION_STAT B, 
  31 T_SESSION_STAT C 
  32 where A.NAME = B.NAME 
  33 AND A.NAME = C.NAME 
  34 AND A.ID = 1 
  35 AND B.ID = 2 
  36 AND C.ID = 3 
  37 ) 
  38 where ABS(VALUE) > 0 
  39 ) LOOP 
  40 DBMS_OUTPUT.PUT_LINE(RPAD(C.NAME, 50, ’ ’) || C.VALUE); 
  41 END LOOP; 
  42 
  43 END; 
  44 / 
  PL/SQL 过程已成功完成。 
  SQL> truncate TABLE T_SESSION_STAT; 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐