事务过程中ITL的变化

简介:
1. 事务开始
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.014.0000024e  0x0080028e.00d9.2e  C---    0  scn 0x0000.00164660
0x02   0x0007.001.000001bb  0x0080049a.00cf.2c  ----    1  fsc 0x0000.00000000 
lck标识为1,表示该事务锁住了1条记录, fsc变成0x0000.00000000 相应的记录lb指向ITLOx02
block_row_dump:
tab 0, row 0, @0x1f8d
tl: 10 fb: --H-FL-- lb: 0x2  cc: 1
col  0: [ 6]  67 75 6f 6a 6a 65
end_of_block_dump
2. 提交事务:
  Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.014.0000024e  0x0080028e.00d9.2e  C---    0  scn 0x0000.00164660
0x02   0x0007.001.000001bb  0x0080049a.00cf.2c  --U-    1  fsc 0x0000.0016a59d
block_row_dump:
tab 0, row 0, @0x1f8d
tl: 10 fb: --H-FL-- lb: 0x2  cc: 1
col  0: [ 6]  67 75 6f 6a 6a 65
end_of_block_dump
lck标识仍为1,相应记录的lb仍然没有改变.但是flag变为了--U--
flag的标记解释如下:
---- = transaction is active, or committed pending cleanout 
C--- = transaction has been committed and locks cleaned out 
-B-- = this undo record contains the undo for this ITL entry 
--U- = transaction committed (maybe long ago); SCN is an upper bound
3. 当该数据块上另外一条记录执行DML操作,并提交,这时ITL表会变成:
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.00b.0000024f  0x00800290.00d9.29  --U-    1  fsc 0x0000.0016a6eb
0x02   0x0006.021.00000247  0x0080010e.00d6.13  --U-    1  fsc 0x0000.0016a887
4. 当该数据块上另外一条记录执行DML操作,可以看到所有的ITL的flag的都被重置:
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0008.00b.0000024f  0x00800290.00d9.29  ----    1  fsc 0x0000.00000000
0x02   0x0007.001.000001bb  0x0080049a.00cf.2c  C---    0  scn 0x0000.0016a59d
block_row_dump:
tab 0, row 0, @0x1f82
tl: 11 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 7]  67 75 6f 5f 6a 6a 65
end_of_block_dump
可以看到0x02的lck被清除,fsc变为scn.
结论与问题:事务提交后ITL相应的记录并不清除,当有其他DML操作找不到可用的Slot时,
才会清除.


本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/347319
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
5天前
|
调度 数据库 数据库管理
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
146 0
|
8月前
|
关系型数据库 MySQL 数据库
并发事务更新问题
并发事务更新问题
36 0
|
9月前
|
SQL 存储 关系型数据库
什么是binlog,redolog,两阶段提交
什么是binlog,redolog,两阶段提交
148 0
|
9月前
声明式事务-- 事务的传播机制-- 事务传播机制种类
声明式事务-- 事务的传播机制-- 事务传播机制种类
45 0
|
消息中间件 JavaScript 小程序
MySQL 底层之 MVCC、回滚段、一致性读、锁定读
MySQL 底层之 MVCC、回滚段、一致性读、锁定读
|
SQL 存储 缓存
【ACID底层实现原理、一致性非锁定读(MVCC的原理)、BufferPool缓存机制、重做日志刷盘策略、隔离级别】
【ACID底层实现原理、一致性非锁定读(MVCC的原理)、BufferPool缓存机制、重做日志刷盘策略、隔离级别】
51496 1
【ACID底层实现原理、一致性非锁定读(MVCC的原理)、BufferPool缓存机制、重做日志刷盘策略、隔离级别】
|
存储 Oracle 关系型数据库
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
|
监控 关系型数据库 MySQL
如何避免长事务对业务的影响?
大家好前面我们大概了解了关于事务的隔离级别,实现方式,启动方式的细节,长事务与短事务的区别。今天我们延伸介绍一下,如果因为失误用了长事务,那我们在工作中如何发现问题,排查问题?
|
关系型数据库 MySQL Java
实战分析:事务的隔离级别和传播属性(上)
实战分析:事务的隔离级别和传播属性(上)
实战分析:事务的隔离级别和传播属性(上)