[转帖]事务上的等待事件 —— enq: TX - contention
TX锁是保护事务的,事务结束时便会释放。因此,为获得TX锁为等待的会话,要等到拥有锁的会话的事务结束为止。
-
SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like '%enq: TX%';
-
-
NAME PARAMETER1 PARAMETER2 PARAMETER3
-
------------------------------ --------------- --------------- ---------------
-
enq: TX - row lock contention name|mode usn<<16 | slot sequence
-
enq: TX - allocate ITL entry name|mode usn<<16 | slot sequence
-
enq: TX - index contention name|mode usn<<16 | slot sequence
-
enq: TX - contention name|mode usn<<16 | slot sequence
(1)欲修改特定行时,相关的等待事件是enq: TX - row lock contention。
修改相同行,是发生TX锁引起争用的最普遍的情况。TX锁保护的资源是“事务”。修改相同行伴随着的TX锁争用,完全是应用程序的问题。长时间执行的update或delete命令最好是在事务较少的时段执行。还有,优化update或delete命令本身也是改善性能的另一种方法。特别是对大量数据执行update,不仅引起TX锁争用,而且会引起许多性能问题。
代替大量执行的update的一种方法如下:
(1)创建一个复制既存表old_table的新表new_table,然后将修改内容存储。即利用“create table new_table as select * from old_table”之类的命令。
(2)在新创建的表new_table中,创建与old_table相同的索引等。
(3)对于既存表old_table执行drop,然后将新表new_table重命名为old_table。
执行以前工作时,若是同时使用nologging和Parallel选项,就可以将所愿的工作更快,而且可以在利用更少资源的前提下实行。
(2)欲修改特定行上唯一键(unique key)或主键(primary key)相应的列时,相关的等待事件是enq: TX - row lock contention。
发生唯一键或主键冲突时也会发生TX锁争用。唯一键冲突引起的TX锁争用完完全全是应用程序的问题。最好的解决方法就是使用sequence创建唯一键。
(3)欲修改的块的ITL上想要登记自身相应的事务条目时,相关的等待事件是enq: TX - allocate ITL entry。
所有事务在修改块之前,必须在块头的ITL上等级条目。
(4)欲修改已创建位图索引(bitmap index)的列值时,相关的等待事件是enq: TX - row lock contention。
位图索引是为了对那些读取频繁而写入工作较少的表,即将select语句性能最大限度的优化而考虑的。对于DML频繁的表,随意使用位图索引相当危险。每当行被修改时,都要计算位图值,因此DML本身的性能将下降。而且多个会话同时执行DML时,更是发生过多的TX锁争用。若对DML频繁的表想要保障sql语句的性能,与其使用位图索引,不如使用Materialized View之类的功能。
(5)索引叶节点上发生分割时,相关的等待事件是enq: TX - index contention。
(6)其它情况时,相关的等待事件是enq: TX - contention。
[转帖]事务上的等待事件 —— enq: TX - contention的更多相关文章
- 奇怪的等待事件“enq: ss - contention”
数据库有时会遇到大量的进程发生'enq: ss - contention'等待,持续5到10分钟,然后自动消失.从字面上看,'SS'是Sort Segment: select * from v$loc ...
- 【故障处理】队列等待之enq IV - contention案例
[故障处理]队列等待之enq IV - contention案例 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- 网络上的等待事件 —— SQL*Net message from client/dblink
SQL*Net message from client SQL> select event#,name,parameter1,parameter2,parameter3 from v$event ...
- Oracle常见的几种等待事件
1. CPU time CPU time其实不是真正的等待事件.是衡量CPU是否瓶颈的一个重要指标.一般来讲,一个良好的系统,CPU TIME 应该排在TOP 5 TIME Event的最前面. 当然 ...
- ORACLE等待事件:read by other session
read by other session简介 官方关于read by other session的介绍如下: When information is requested from the datab ...
- ORACLE AWR结合ASH诊断分析enq: TX - row lock contention
公司用户反馈一系统在14:00~15:00(2016-08-16)这个时间段反应比较慢,于是生成了这个时间段的AWR报告, 如上所示,通过Elapsed Time和DB Time对比分析,可以看出在这 ...
- 【故障解决】enq: PS - contention
[故障解决]enq: PS - contention 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...
- 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)
[等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV - contention) 1 BLOG文档结 ...
- RAC性能分析 - gc buffer busy acquire 等待事件
概述---------------------gc buffer busy是RAC数据库中常见的等待事件,11g开始gc buffer busy分为gc buffer busy acquire和gc ...
- 【等待事件】等待事件系列(5.1)--Enqueue(队列等待)
[等待事件]等待事件系列(5.1)--Enqueue(队列等待) 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ...
随机推荐
- 5s!用浏览器打造一个开箱即用的Linux系统
做为Linux系统管理员.或者是系统运维工程师,肯定会在工作遇到这样的需求:需要开发环境.测试环境.准生产环境等等环境,有时候建一个环境费时间不说,还容易出各种错误,好不容易建好了,可能还用不了几天. ...
- 11、层叠布局(Stack、Align、 Positioned)
Flutter Stack组件 Stack表示堆的意思,我们可以用Stack或者Stack结合Align或者Stack结合 Positiond来实现页面的定位 布局 Alignment(对齐)类是用 ...
- Serverless架构的前世今生
一.Serverless简介 云计算的不断发展,涌现出很多改变传统IT架构和运维方式的新技术,而以虚拟机.容器.微服务为代表的技术更是在各个层面不断提升云服务的技术能力,它们将应用和环境中很多通用能力 ...
- Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越
本文分享自华为云社区<Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越>,作者: GaussDB 数据库 . 1.引言 在很多业务场景下,数据库应 ...
- 云原生2.0时代下,DevOps实践如何才能更加高效敏捷?
当前全球的数字化浪潮逐步加深,云计算成为当今信息化发展的重要基础设施,云原生(Cloud Native)在数字化浪潮中的角色逐步提升,成为近几年云计算领域炙手可热的话题. 首先我们来看看一张图,看看云 ...
- Mac 常用软件、快捷健、常用操作 和 Windows 对比
常用快捷健 Mac Windows 说明 活动监视器 任务管理器 制作替身 创建快捷方式 Command + I 右击属性 显示简介 Command + Option + I 开启信息检查器 + 鼠标 ...
- Spring Boot JWT 用户认证
JWT token验证后,通过 ThreadLocal 进行传值 https://jwt.io/#debugger 官网提供的 JAVA 工具还是挺多的,选了个 Star 比较多的 https://g ...
- BST(二叉搜索树)
BST 基础芝士 给定一棵二叉树,每个节点有权值,定义"BST 性质"为: 对于树中的任意一个节点 \(x\) 都有: \(x\) 的权值大于 \(x\) 的左子树中任意节点的权值 ...
- BAPI_PO_CHANGE 采购订单修改服务
修改服务页签里面的价格和数量,达到修改净价和条件里面金额的目的 数据可以通过采购订单查询ESLH和ESLL表获取 "------------------------------------- ...
- 【QT】tr()的作用
函数 tr() 全名是 QObject::tr() ,被它处理的 字符串可以 使用工具提取出来翻译成其他语言, 也就是做国际化使用. 只要记住,Qt 的最佳实践:如果你想让你的程序国际化的话,那么,所 ...