user rollbacks 与 transaction rollbacks 的区别

 

论坛上有个帖子

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 造成的

时间: 2024-09-20 10:37:52

user rollbacks 与 transaction rollbacks 的区别的相关文章

Statspack之十四-"log file sync" 等待事件

原文出处: http://www.eygle.com/statspack/statspack14-LogFileSync.htm 当一个用户提交(commits)或者回滚(rollback),session的redo信息需要写出到redo logfile中.用户进程将通知LGWR执行写出操作,LGWR完成任务以后会通知用户进程.这个等待事件就是指用户进程等待LGWR的写完成通知. 对于回滚操作,该事件记录从用户发出rollback命令到回滚完成的时间. 如果该等待过多,可能说明LGWR的写出效率

redo 和 undo 之三

6.ITL事物槽: http://blog.csdn.net/changyanmanman/article/details/7081699 更详细的ITL事务槽的测试实验参考我的博客: 一个修改事务的开始执行: 1)  首先当一个事务开始时,需要在undo段事务表上分配一个事务表项: 2)  在数据块头部获得一个ITL事务槽,该事务槽指向回滚段段头的事务表项: 3)  在修改数据之前,需要在回滚段中记录前镜像信息,回滚段头事务表项指向该记录:4)  锁定修改行,修改行锁定位(lb-lock bl

ORACLE 回滚段详解

ORACLE 回滚段   回滚段概述  回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息.  回滚段的作用  事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值.  事务恢复:当事务正在处理的时候,例程失败,回滚段的信

【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待

 [等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 控制文件类等待 ② 日志类等待   2.2  相关参考文章链接 [推荐] 等待事件系列(1)--User I/O类型(下) http://blog.itpub.net/26736162/viewspace-2124435

Oracle AWR报告详细分析 (文档 ID 1523048.1)

Oracle AWR报告详细分析  (文档 ID 1523048.1) AWR 是 Oracle  10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分. WORKLOAD REPOSITORY report for  DB Name DB Id Instance Inst num Release RAC Host ICCI 13140

AWR中的主要事件分析精讲

  现在很多DBA都阅读和分析STATSPACK/AWR报告,不过这份报告可不容易读.一般的DBA顶多能够看看前面的TOP EVENTS,命中率以及后面的一些ADVISORY,而实际上系统的更多的秘密存在于那些看起来十分生涩的InstanceActivity Stats中.但是对于这些STATS,大多数DBA都感到很无奈,没有任何官方的资料披露这些STATS的含义,有些DBA经过长年的积累,可以从字面意思上对某些指标进行一些解读.这些年里,老白阅读了数千份的STATSPACK/AWR报告,经过长

理论实践:循序渐进理解AWR细致入微分析性能报告

黄凯耀 (Kaya) ACOUG核心会员,高级技术专家 曾经工作于Oracle Real World Database Performance Group,一个隶属于Oracle公司总部数据库产品管理的核心团队.大学及研究生时期专注于Linux应用开发和Linux内核开发工作. 编辑手记:AWR是Oracle数据库中一个非常重要的诊断工具,通过度量而展现问题,每一个DBA都应当深入理解这其中的知识,本文通过讲解和分析,展示AWR分析的过程. 概述:本篇文章重点对 AWR 报告中的 DB Time

COM, COM+ and .NET 的区别(转)

区别 作者:Sunwen译 所有的优秀程序员都会尽自己的最大努力去使自己所写的程序具有更好的可重用性,因为它可以让你快速地写出更加健壮和可升级性的程序. 有两种使代码重用的选择:1. 白盒:最简单的一种,就是把你的程序片拷贝到另一个文件中.2. 黑盒:它包括把编译过的程序片连接起来.因此客户端可以调用的编译过的黑盒类库就叫作组件. .Net中也同样为开发者提供了类似于COM的建立和展开组件的方法.开发人员很容易地被这两种以组件为基础的开发模型所迷惑,所以,让我们来看一看这些不同的开发方法,以使我

Hibernate学习(二)Hibernate中Session之get和load方法的真正区别

最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致. 先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接读取数据库,所以直接返回