暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

enq:TX、TS、TM、TT解释(不全)

原创 凌韵 2023-10-27
363

 一、TS


Oracle的Enqueue事件是一个重要的数据库性能诊断工具,可以帮助用户诊断排他锁、行锁和对象锁等多种不同类型的锁,以确保锁之间的协调请求和实施运行时。通常用于表空间及临时分段(TS)之间的事务操作,保证Oracle数据库中多个用户之间数据交换的安全性和一致性。

Enqueues(TS)主要应用于表空间及临时分段操作,用于实现并发控制。每个表空间及临时分段都会以共享的资源方式存在,这些资源通常被多个用户共享,不同的用户在访问资源时需要采取控制措施,这就是Enqueues(TS)进行控制的地方。Enqueue(TS)使用消息队列,他可以记录多个并发访问者,并用来确认他们的事务操作,并根据需要进行等待和控制,以防止事务操作之间的冲突。此外,当有事务需要更新表空间或临时分段时,Enqueue(TS)也可以在此时起到类似的作用,以保护正在进行的操作以及之后的操作。

因此,Enqueues(TS)在Oracle数据库中是保证事务安全性、一致性及并发控制的重要手段,可以有效减少数据库层事务间内部的冲突,保证用户对数据库操作的安全性和正确性。当出现TS问题时,启用Oracle事件enqueue(TS)可以追踪并解决系统性能问题。


 二、TT


TT 队列锁在官方文档中介绍为TT, Temporary Table,但是实际在版本8i之后该队列锁更多参与在表空间管理事务中。也可以称enqueue TT为tablespace lock。

作用 该enqueue TT队列锁用以在各种类型的表空间操作执行过程中避免出现死锁dead lock。 该enqueue lock的 ID2表明正在执行的操作种类,ID1表明该操作对应的表空间号V$Tablespace.TS#。 ID1/ ID2的含义 id1是tablespace number V$Tablespace.TS#,ID2表明执行中的操作类型。以下是操作类型对应代码;

0- 用以避免在drop tablespace和创建rollback segment之间发生死锁

1- 用以串行化在给定表空间上创建数据文件

2- 用以避免在TSPITR tablespace point in time recovery期间发生其他类型操作

4- 用以在创建tablespace时锁住该tablespace id

8- 用以避免在ALTER TABLESPACE期间发生死锁

16- 即16进制的0x10,用以同步 分配和回收盘区,allocation and deallocation of extents.

32+ 用在增加数据文件add datafile和创建表空间时,其中ID2为 32(十进制的)+相对文件号relative file number


三、TM


TM Enqueue (DML Enqueue)是再执行DML操作修改表时由事务获取的。DML操作需要表锁,以防止与事务发生冲突的同时DDL操作。

当应用程序具有引用完整性并试图修改子/父表时,当外键上没有索引时,Oracle将在父/子表上获得额外的锁定。因此,建议为数据库中定义的所有外键添加索引。

TM锁上等待的最常见原因往往涉及外键约束,其中受约束的列没有被索引。Oracle还会等待TM锁,直到它被授予或请求超时或TM锁发生死锁检测。

临时解决方案:与业务人员确认后 kill update t02_account 表的那条会话。

enq:TM-contention等待的发生,发生TM锁争用的情况如下:

1. 修改无索引外键(foreign key)的父键时

2 . DML与DDL之间的TM争用

3. LOCK TABLE 引起的TM锁争用

4. direct load工作引起的TM锁争用

四、TX


enq:TX-index contention是一个非常常见的等待事件,其专指由于索引分裂产生的竞争等待。

最常见的索引竞争一般发生在主键索引上,主键值从序列(sequence)中获取,每个事务都会生成一条新的记录,每条记录都要获得一个新的序列号,因为从sequence中取出的值是单向递增的,当索引中插入数据,并且维护索引结构的时候,不得不一直走向索引的最右侧的分支,对于每一个操作,都会想要维护索引中最右边的叶节点,那么所有的操作都会关注同一个内存块,希望能够维护这块内存,这就是一种典型的竞争形式。但在同一时间,只有一个人能够修改这块内存,因此当有一个人在修改的时候,其他所有想修改的人只能处于等待状态。

发生TX锁的原因:

1、不同session更新或删除同一个记录;

2、唯一索引有重复索引

3、位图索引多次更新

4、同时对一个数据块更新

5、等待索引块分裂

关于P1、P2、P3的说明:

P1---与等待相关的数据文件的全部文件数量

P2---P1中的数据文件的块数量

P3---描述等待产生原因的代码




「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论