百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[国内信息] 免费领取阿里云服务器2000元代金券! [复制链接]
查看:818122 | 回复:5941

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 11:28:24 | 显示全部楼层 来自 中国河北衡水
TRX_UNDO_INSERT_REC类型的Undo回滚在row_undo_ins中进行,insert的逆向操作当然就是delete,根据从Undo Record中解析出来的主键
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 18:18:55 | 显示全部楼层 来自 中国河北衡水
我们已经知道,InnoDB在Undo Log中保存了多份历史版本来实现MVCC,当某个历史版本已经确认不会被任何现有的和未来的事务看到的时候,就应该被清理掉。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 19:01:04 | 显示全部楼层 来自 中国河北衡水
因此就需要有办法判断哪些Undo Log不会再被看到。InnoDB中每个写事务结束时都会拿一个递增的编号trx_no作为事务的提交序号,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 20:45:19 | 显示全部楼层 来自 中国河北衡水
如下图所所以,由于ReadView List中最老的ReadView在获取时,Transaction J就已经Commit,因此所有的读事务都一定能被Index中的版本或者第一个Undo历史版本满足,不需要更老的Undo,因此整个Transaction J的Undo Log都可以清理了。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-15 10:17:45 | 显示全部楼层 来自 中国河北衡水
之后该事务的所有读请求都从这个快照上获取。当然实现上不能真正去为每个事务打一个快照,这个时间空间都太高了。InnoDB的做法,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-15 18:50:40 | 显示全部楼层 来自 中国河北衡水
处理完Undo Record1之后沿着Next Record Offset去找下一个Undo Record,当找到Page末尾时,要通过Page List Node找下一个Page,找到Page内的第一个Undo Record,重复上面的过程直到找出所有的Undo Record。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-15 20:11:16 | 显示全部楼层 来自 中国河北衡水
处理完Undo Record1之后沿着Next Record Offset去找下一个Undo Record,当找到Page末尾时,要通过Page List Node找下一个Page,找到Page内的第一个Undo Record,重复上面的过程直到找出所有的Undo Record。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-15 20:40:39 | 显示全部楼层 来自 中国河北衡水
并作为一种特殊的Update操作记录了Undo Record。那么在对应的TRX_UNDO_DEL_MARK_REC类型的Undo Record被清理之前,需要先从索引上真正地删除这个Delete Mark的记录。因此Undo Record的清理工作会分为两个过程:
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-16 14:44:06 | 显示全部楼层 来自 中国河北衡水
会写自己对应的Redo Log,通过Redo Log来保证自己的原子性。因此,更合适的称呼应该是Undo Data。

三 Undo Record中的内容
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

贡献
8406
鲜花
24
注册时间
2008-10-11

落伍者落伍手机绑定

 楼主| 发表于 2022-11-16 15:09:32 | 显示全部楼层 来自 中国河北衡水
每当InnoDB中需要修改某个Record时,都会将其历史版本写入一个Undo Log中,对应的Undo Record是Update类型。当插入新的Record时,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-29 22:32 , Processed in 0.068164 second(s), 26 queries , Gzip On.

返回顶部