“enq: TM - contention”锁引起数据库卡死
来源:互联网 发布:开票软件金税盘版价格 编辑:程序博客网 时间:2024/05/19 22:07
基本要素
用户告知数据库迁移后,在发送医嘱的时候,有锁表情况,导致全院业务受影响,希望分析并解决。
问题分析
查看ASH报告,如下:
CPUs SGA Size Buffer Cache Shared Pool ASH Buffer Size---- ------------------ ------------------------------------ ------------------ 120 101,943M (100%) 81,920M(80.4%) 9,216M (9.0%) 240.0M (0.2%) Analysis Begin Time: 07-4月 -1508:39:41 Analysis End Time: 07-4月 -1509:09:41 Elapsed Time: 30.0 (mins) Begin Data Source: V$ACTIVE_SESSION_HISTORY End Data Source: V$ACTIVE_SESSION_HISTORY Sample Count: 184,994 Average Active Sessions: 102.77 Avg. Active Session per CPU: 0.86 Report Target: None specified Top User Events DB/Inst: ZLHIS/zlhis3 (4月 07 08:39 to 09:09) Avg ActiveEvent Event Class % Event Sessions-------------------------------------------------- ---------- ----------enq: TM - contention Application 93.47 96.07CPU + Wait for CPU CPU 3.18 3.27enq: TX - row lock contention Application 2.81 2.88 -------------------------------------------------------------
可以看到,系统出现了严重的TM锁,TM锁是表级锁,如果出现,会引起严重的性能问题,接着需要分析下是什么对象导致,如下:
Top Event P1/P2/P3 Values DB/Inst: ZLHIS/zlhis3 (4月 07 08:39 to 09:09) Event % Event P1 Value, P2 Value, P3 Value % Activity------------------------------ ------------------------------------ ----------Parameter 1 Parameter 2 Parameter 3 ---------------------------------------------------- --------------------------enq: TM - contention 93.47 "1414332419","91048","0" 38.44name|mode object # table/partition "1414332419","90822","0" 34.22 "1414332419","128417","0" 13.86 enq: TX - row lock contention 2.81 "1415053318","11206682","20" 0.30name|mode usn16 | slot sequence
这里我们可以获取很重要的信息,object_id,,如上,我们可以看到被锁的对象id分别是91048,90822,128417,我们通过dba_objects这张视图,去查找ID号分别位上面3个的对象,分别是3张表”病例XX明细”、”药品XX明细”、”检验XX记录”,这3张表都没有数据,但是有个共同的特别,对药品和医嘱2张表都有外键相连,但是该表外键上都没有单独索引。一般情况下如果主键列被更新,就会导致外键列被锁住,不加索引的外键列会造成严重的性能问题,所以除非你有十分的把握,否则还是在外键列上添加索引。
解决过程
分别对以上3张表的外键添加单独的索引,注意,这里如果有包含外键列的复合索引,也要单独再建个索引。
0 0
- “enq: TM - contention”锁引起数据库卡死
- 转载-enq:TM-contention
- enq:TM-contention
- enq: TM - contention 等待事件说明
- enq: TM – contention等待事件
- 解决enq: TM - contention TM 等待事件案例
- Oracle enq: TX contention 和 enq: TM contention 等待事件说明
- Oracle enq: TX contention 和 enq: TM contention 等待事件说明【转自dave偶像大神】
- 事务上的等待事件 —— enq: TM - contention
- 深入剖析:insert 的enq: TM – contention
- 数据库出现 enq: TX - row lock contention
- 数据库出现 enq: TX - row lock contention
- 如何找出引起enq:TX - row lock contention的记录
- enq: TM - contention TM 等待事件的原因及模拟(表外键约束无索引导致)
- enq: PS - contention
- enq: TX - index contention
- enq: SQ – contention
- enq: FB - contention
- android design
- iOS_官方例子汇总下载
- UIControl-IOS开发
- 二叉树的遍历——前序,中序,后序,层序
- 解决ScrollView嵌套ListView冲突问题,并且添加阻尼效果
- “enq: TM - contention”锁引起数据库卡死
- unix下管道编程
- Knockout中ViewModel与Model的互转
- php 获取最后插入数据的id
- Android布局文件layout.xml的一些属性值
- CAS 实现单点登录(SSO)简单实例demo(二)
- BNUOJ--29140 Taiko taiko【我又发懒==】
- C语言 指针及动态内存分配
- Eclipse maven 导入父模块和子模块