小议Oracle 11g的自治事务(六)
自治事务提供了很方便的事务控制功能,使得用户可以在不影响当前事务的情况下,提交或回滚对数据库的修改。那么Oracle为了实现这个功能是否付出了很多的代价呢,下面对比一下自治事务和普通事务的统计信息:
SQLCREATEGLOBALTEMPORARYTABLET_SESSION_STAT 2(IDNUMBER,NAMEVARCHAR2(100),VALUENUMBER) 3ONCOMMITPRESERVEROWS;
表已创建。
SQLCREATETABLET_RECORD(IDNUMBER,NAMEVARCHAR2(30));
表已创建。
SQLCREATEORREPLACEPROCEDUREP_TESTAS 2BEGIN 3INSERTINTOT_RECORDVALUES(1,‘TEST‘); 4COMMIT; 5END; 6/
过程已创建。
SQLCREATEORREPLACEPROCEDUREP_TEST_AUTOAS 2PRAGMAAUTONOMOUS_TRANSACTION; 3BEGIN 4INSERTINTOT_RECORDVALUES(2,‘TEST‘); 5COMMIT; 6END; 7/
过程已创建。
SQLSETSERVEROUTOFF SQLBEGIN 2 3INSERTINTOT_SESSION_STATSELECT1,NAME,VALUE 4FROMV$SESSTATA,V$STATNAMEB 5WHEREA.STATISTIC#=B.STATISTIC# 6ANDA.SID=(SELECTSIDFROMV$MYSTATWHEREROWNUM=1); 7 8P_TEST; 9 10INSERTINTOT_SESSION_STATSELECT2,NAME,VALUE 11FROMV$SESSTATA,V$STATNAMEB 12WHEREA.STATISTIC#=B.STATISTIC# 13ANDA.SID=(SELECTSIDFROMV$MYSTATWHEREROWNUM=1); 14 15P_TEST_AUTO; 16 17INSERTINTOT_SESSION_STATSELECT3,NAME,VALUE 18FROMV$SESSTATA,V$STATNAMEB 19WHEREA.STATISTIC#=B.STATISTIC# 20ANDA.SID=(SELECTSIDFROMV$MYSTATWHEREROWNUM=1); 21 22FORCIN 23( 24SELECT* 25FROM 26( 27SELECTA.NAME,C.VALUE+A.VALUE-2*B.VALUEVALUE 28FROM 29T_SESSION_STATA, 30T_SESSION_STATB, 31T_SESSION_STATC 32WHEREA.NAME=B.NAME 33ANDA.NAME=C.NAME 34ANDA.ID=1 35ANDB.ID=2 36ANDC.ID=3 37) 38WHEREABS(VALUE)0 39)LOOP 40DBMS_OUTPUT.PUT_LINE(RPAD(C.NAME,50,‘‘)
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|