事务过程中ITL的变化

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:
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
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
14天前
柔性事务与刚性事务的区别
柔性事务遵循BASE理论,强调系统在面对高并发和分布式环境时的基本可用性和最终一致性。与之相对,刚性事务严格遵守ACID原则,确保操作的原子性、一致性、隔离性和持久性,适用于对数据完整性和准确性要求极高的场景。
29 5
|
6月前
|
存储 SQL 关系型数据库
binlog、redolog和undolog三者有何区别?
MySQL中的binlog、redo log和undo log是日志文件,各有特定作用。binlog用于数据备份、恢复和复制,适用于所有存储引擎。redo log记录事务修改,用于崩溃恢复和数据持久性,仅InnoDB存储引擎支持。undo log保存事务修改前的状态,用于事务回滚和MVCC,也仅InnoDB支持。它们在功能和记录内容上有明显区别,有助于事务管理和数据库一致性。
160 0
|
7月前
|
调度 数据库 数据库管理
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
471 0
|
关系型数据库 MySQL 数据库
并发事务更新问题
并发事务更新问题
67 0
|
SQL 存储 关系型数据库
什么是binlog,redolog,两阶段提交
什么是binlog,redolog,两阶段提交
219 0
|
存储 Oracle 关系型数据库
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
|
监控 关系型数据库 MySQL
如何避免长事务对业务的影响?
大家好前面我们大概了解了关于事务的隔离级别,实现方式,启动方式的细节,长事务与短事务的区别。今天我们延伸介绍一下,如果因为失误用了长事务,那我们在工作中如何发现问题,排查问题?
|
Java 数据库连接 测试技术
BUG记录-多线程对事务的影响有多么大?
BUG记录-多线程对事务的影响有多么大?
175 0

相关实验场景

更多