顾名思义,v$sysstat中的user rollbacks是计算的是每次rollback命令。
而transaction rollbacks只计算实际有transaction的rollback。
SQL> select name, value from v$sysstat
2 where name in
3 ('user rollbacks', 'transaction rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user rollbacks 17
transaction rollbacks 56
SQL> create table testbyhao as select * from dba_objects;
Table created.
SQL> delete from testbyhao where rownum=1;
1 row deleted.
SQL> rollback;
Rollback complete.
SQL> select name, value from v$sysstat
2 where name in
3 ('user rollbacks', 'transaction rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user rollbacks 18
transaction rollbacks 57
SQL> rollback;
Rollback complete.
SQL> rollback;
Rollback complete.
SQL> select name, value from v$sysstat
2 where name in
3 ('user rollbacks', 'transaction rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user rollbacks 20
transaction rollbacks 57
而我们在statspack中看到的Rollback per transaction%=user rollbacks/(user rollbacks+user commits)*100%。
所以有时看到这个值很大,有可能是不影响性能的,估计是某个应用频繁的进行无意义的user rollback。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15415488/viewspace-664260/ ,如需转载,请注明出处,否则将追究法律责任。