事务过程中ITL的变化

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介:
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)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
算法
分布式锁设计问题之重建节点锁信息时要分为多个阶段如何解决
分布式锁设计问题之重建节点锁信息时要分为多个阶段如何解决
|
6月前
|
调度 数据库 数据库管理
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
354 0
|
关系型数据库 MySQL 数据库
并发事务更新问题
并发事务更新问题
59 0
|
SQL 存储 关系型数据库
什么是binlog,redolog,两阶段提交
什么是binlog,redolog,两阶段提交
202 0
|
存储 缓存 Java
每日一博 - 常见的Spring事务失效&事务不回滚案例集锦
每日一博 - 常见的Spring事务失效&事务不回滚案例集锦
157 0
|
存储 Oracle 关系型数据库
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
|
关系型数据库 MySQL
幻读“异常”引出的快照读创建点问题
幻读“异常”引出的快照读创建点问题
|
监控 关系型数据库 MySQL
如何避免长事务对业务的影响?
大家好前面我们大概了解了关于事务的隔离级别,实现方式,启动方式的细节,长事务与短事务的区别。今天我们延伸介绍一下,如果因为失误用了长事务,那我们在工作中如何发现问题,排查问题?
|
Java 数据库连接 测试技术
BUG记录-多线程对事务的影响有多么大?
BUG记录-多线程对事务的影响有多么大?
168 0