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

[国内信息] 腾讯云轻量应用服务器2核2G4M仅20元 [复制链接]
查看:390977 | 回复:641

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-16 18:34:50 | 显示全部楼层 来自 中国河北衡水
除了跟Insert Undo Record相同的头尾信息,以及主键Key Fileds之外,Update Undo Record增加了:

Transaction Id记录了产生这个历史版本事务Id,用作后续MVCC中的版本可见性判断
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-17 08:47:22 | 显示全部楼层 来自 中国河北衡水
同时,更多的责任意味着更复杂的管理逻辑,InnoDB中其实是把Undo当做一种数据来维护和使用的,也就是说,Undo Log日志本身也像其他的数据库数据一样
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-17 17:08:54 | 显示全部楼层 来自 中国河北衡水
I,J,K三个事务分别有自己的逻辑上连续的三条Undo Log,每条Undo Log有自己的Undo Log Header。从索引中的这条Record沿着Rollptr可以依次找到这三个事务Undo Log中关于这条记录的历史版本。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-18 09:07:17 | 显示全部楼层 来自 中国河北衡水
Undo Page剩余的空间都是用来存放Undo Log的,对于像上图Undo Log 1,Undo Log 2这种较短的Undo Log,为了避免Page内的空间浪费,InnoDB会复用Undo Page来存放多个Undo Log,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-18 15:13:49 | 显示全部楼层 来自 中国河北衡水
其中会根据是insert还是update类型,分别调用trx_undo_page_report_insert或者trx_undo_page_report_modify。本文开始已经介绍过了具体的Undo Record内容。简单的讲,insert类型会记录插入Record的主键,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-19 09:03:38 | 显示全部楼层 来自 中国河北衡水
首先会调用row_undo_mod_del_unmark_sec_and_undo_update,其中根据从Undo Record中解析出的update vector来回退这次操作在所有二级索引上的影响
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-19 18:20:51 | 显示全部楼层 来自 中国河北衡水
或者找到了已经Purge了的位置,说明到头了,会直接返回失败。否则,就会解析对应的Undo Record,恢复出trx_id、指向下一条Undo Record的rollptr、主键信息,diff信息update vector等信息。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-20 07:09:23 | 显示全部楼层 来自 中国河北衡水
Undo本身有着比Redo Log复杂得多、按事务分配而不是顺序写入的组织结构,其本身的Durability像InnoDB中其他的数据一样,需要靠Redo来保证,像庖丁解InnoDB之REDO LOG中介绍的那样。除了通用的一些MLOG_2BYTES、MLOG_4BYTES类型之外,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-21 12:08:59 | 显示全部楼层 来自 中国河北衡水
这些回滚的操作是一致的,基本的过程就是从该事务的Undo Log中,从后向前依次读取Undo Record,并根据其中内容做逆向操作,恢复索引记录。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-21 14:56:03 | 显示全部楼层 来自 中国河北衡水
之后,就可以恢复出Undo Log的内存组织模式,包括活跃事务的内存结构trx_t,Rollback Segment的内存结构trx_rseg_t,以及其中的trx_undo_t的四个链表。
免费领取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-24 23:27 , Processed in 0.063323 second(s), 26 queries , Gzip On.

返回顶部