论坛上有个帖子
SQL> select name,value from v$sysstat where name in ('user commits','user rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user commits 506661
user rollbacks 1105228
SQL> select round(1105228/(1105228+506661),4)*100||'%' from dual;
ROUND(1105228/(1105228+506661)
------------------------------
68.57%
经分库,这个high算正常吗?基本没不用delete操作,咋还这么high呢?
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 23
transaction rollbacks 0
SQL> delete from scott.cust where rownum=1;
已删除 1 行。
SQL> rollback;
回退已完成。
SQL> select name ,value from v$sysstat
2 where name in
3 ('user rollbacks','transaction rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user rollbacks 24
transaction rollbacks 1
SQL> rollback;
回退已完成。
SQL> rollback;
回退已完成。
SQL> select name ,value from v$sysstat
2 where name in
3 ('user rollbacks','transaction rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user rollbacks 26
transaction rollbacks 1
所以有时看到rollback回滚率值很大,有可能是不影响性能的,可能是某个应用频繁的进行无意义的user rollback 造成的
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-664270/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22664653/viewspace-664270/