Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1118584
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2010-10-11 09:47:59

单独的一句commit不会记录成一个事务,而单独的rollback会记录成一个事务,并且该事务还是一个回滚事务。
用2个简单的存储过程,结合statspack以及v$sysstat的统计信息来查看这一现象。
分别做2个statspack报告

先看1000w次的commit:
begin
for i in 1..10000000 loop
commit;
end loop;
end;
/

在此期间内的statspack报告显示平均每秒事务为0:
Transactions:                  0.00
v$sysstat视图中统计的user commits基本没有变化。

再看1000w次的rollback:
begin
for i in 1..10000000 loop
rollback;
end loop;
end;
/


在此期间内的statspack报告显示平均每秒事务为7w多:
Transactions:             76,515.16
v$sysstat视图中统计的user rollbacks有明显变化,增加了1000w。

此外,在statspack报告中的每个事务的回滚比率达到100%,意味着,在此期间的所有事务都回滚了。
Rollback per transaction %:  100.00


select STATISTIC#,NAME,VALUE from v$sysstat where statistic# in (4,5);

STATISTIC# NAME                   VALUE
---------- ----------------- ----------
         4 user commits             191
         5 user rollbacks      10200000

阅读(967) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~