今天研究statspack report,发现load profile中有一项Rollback per transaction居然高达70%。如此高的回滚率,应用程序方面应该是出现了很多错误,导致事务被回滚。但我检查了应用程序的日志,却没有发现任何问题。于是google了一下,发现原来问题是出在statspack计算Rollback per transaction的公式上面。
1。Oracle中的rollback分成两种,user rollback和transaction rollback。只要是用户发出rollback命令,无论是否真的有数据回滚,user rollback都会增加。但transaction rollback只有发生了真正的回滚才会增加。测试如下:
SQL> select name, value from v$sysstat where name in ('user rollbacks', 'transaction rollbacks');
NAME VALUE
------------------------------ ----------
user rollbacks 6800
transaction rollbacks 5
SQL> rollback;
Rollback complete.
SQL> rollback;
Rollback complete.
SQL> select name, value from v$sysstat where name in ('user rollbacks', 'transaction rollbacks');
NAME VALUE
------------------------------ ----------
user rollbacks 6802
transaction rollbacks 5
SQL> create table test (id int);
Table created.
SQL> insert into test values (1);
1 row created.
SQL> rollback;
Rollback complete.
SQL> select name, value from v$sysstat where name in ('user rollbacks', 'transaction rollbacks');
NAME VALUE
------------------------------ ----------
user rollbacks 6803
transaction rollbacks 6
2。Statspack中计算Rollback per transaction的公式为:Rollback per transaction% = user rollback/(user rollback+user commit);
3。一些ORM实现会在成功commit之后发出一个rollback的命令(这个还不知道是为什么)。这样就会产生大量并没有实际数据回滚的user rollback。
综合以上原因,就导致了很高的Rollback per transaction%。虽然对实际性能没有什么影响,但会给分析者带来一种错觉。而真正对性能有影响的Rollback per transaction%,计算公式应当为:
Rollback per transaction% = transaction rollback/(transaction rollback+user commit);
分享到:
相关推荐
2. **反应式监测**:Statspack提供了一种反应式的性能监测方法,它记录的是数据库的实际运行状态,而非仅依赖于内存中的瞬时数据。 3. **成本效益**:对于拥有大量数据库的环境而言,Statspack的成本远低于OEM,因为...
Oracle Statspack是一个强大的数据库性能分析工具,它为DBA提供了深入洞察Oracle数据库性能的能力。Statspack可以帮助用户收集和分析数据库的运行状况,从而快速定位性能问题,并为优化提供依据。以下将详细介绍...
Statspack 安装 Statspack 是 Oracle 提供的一个性能分析工具,用于收集和分析数据库性能数据。下面是 Statspack 安装的详细步骤和相应的知识点。 一、准备 1. 检查部分参数值:在安装 Statspack 之前,需要检查...
Statspack是Oracle数据库中的一种性能分析工具,它可以帮助DBA(数据库管理员)快速识别系统性能瓶颈,从而进行相应的优化工作。在本篇文章中,我们将详细探讨如何安装Statspack以及如何利用它来进行性能分析。 首先...
- **Rollback per transaction %**: 0.07 - **Rows per Sort**: 46.02 ### 5. **实例效率百分比** - **Buffer Nowait %**: 99.47 - **Redo NoWait %**: 100.00 - **Buffer Hit %**: 77.71 - **In-memory Sort %*...
### Oracle Statspack详解 #### 一、Statspack简介 Statspack是Oracle自8.1.6版本开始提供的一款性能诊断工具,在8.1.7版本得到了进一步增强。尽管该工具随Oracle 8.1.6一同发布,但通过特定脚本可以使其在运行...
STATSPACK是Oracle数据库系统中的一种性能分析工具,主要用于收集和分析数据库的运行统计信息,帮助DBA(数据库管理员)诊断性能问题、优化查询效率以及规划数据库资源的使用。STATSPACK报告是其核心功能之一,它...
### ORACLE STATSPACK:深入理解与应用 #### 一、概述 Statspack是一款功能强大的性能分析工具,它由Oracle官方提供,免费且内置在Oracle数据库中。通过使用Statspack,DBA(数据库管理员)可以收集数据库运行时的...
statspack完整使用指南: 包括: statspack的安装; statspack的自动数据收集; statspack的门限调整; statspack的报表自动产生与邮件发送(aix环境下); statspack的报表详细解析.
总的来说,Statspack是数据库性能调优的重要工具,通过理解其报告结构和分析方法,DBA可以更有效地诊断和解决Oracle数据库的性能问题。在日常运维中,应定期利用Statspack进行性能监控,以确保数据库高效稳定运行。
Statspack通过收集一系列统计信息,包括SQL执行时间、等待事件、块I/O等,为我们提供了一种量化性能的方法。 Session级别的Statspack分析,主要关注的是特定会话的行为。当我们在数据库环境中遇到某个特定用户或...
3. **SQL优化**:针对高耗时的SQL语句进行优化,可能的方法包括重写SQL、使用索引、调整表分区、优化表连接策略等。 4. **调整数据库参数**:根据STATSPACK报告中的资源使用情况,调整数据库参数以适应工作负载,...
- `Rollback per transaction %`:每个事务回滚的百分比,0.98% 表示回滚操作相对较少。 - `Rows per Sort`:每次排序操作处理的平均行数。 通过这些信息,可以深入分析数据库的运行状况,识别潜在的性能瓶颈,...
Oracle StatsPack 是Oracle数据库系统中一个强大的性能分析工具,它为DBA提供了详细的数据库性能统计数据,帮助诊断和优化系统的性能问题。StatsPack 报告包含了丰富的信息,可以帮助我们理解数据库的运行状态,找出...
Oracle中的Statspack是一种强大的性能分析工具,尤其在大型企业如电信运营商的BSS(Business Support Systems)系统中,它在BOSS(Business Operation Support Systems)开发中扮演着至关重要的角色。Statspack是...
Oracle9i STATSPACK 是一个强大的性能分析工具,专为Oracle数据库系统提供高效能的调优支持。在Oracle 9i版本中,STATSPACK扮演了至关重要的角色,帮助DBAs(数据库管理员)识别和解决性能瓶颈,确保系统的稳定运行...
### Statspack工具详解 #### 一、概述 Statspack是Oracle数据库性能监控和诊断的有力工具,它通过收集和分析数据库实例的统计信息,帮助DBA(数据库管理员)定位和解决性能瓶颈。Statspack报告提供了关于数据库...
Oracle 9i Statspack 是一个强大的性能分析工具,它提供了对数据库性能的深入洞察,帮助DBA们诊断和优化数据库的运行效率。Statspack 的安装和使用是数据库管理中的重要环节,尤其对于监控和问题排查至关重要。以下...
Oracle STATSPACK是一种强大的性能分析工具,主要用于诊断和优化Oracle数据库的运行效率。它由Oracle在9i版本中引入,后来在10g及更高版本中被Automatic Workload Repository (AWR)所取代,但即便如此,STATSPACK...