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

[国内信息] 阿里云2000元专属红包领取及使用说明 [复制链接]
查看:831612 | 回复:7836

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 12:44:00 | 显示全部楼层 来自 中国河北衡水
完成回滚的Undo Log部分,会调用trx_roll_try_truncate进行回收,对不再使用的page调用trx_undo_free_last_page将磁盘空间交还给Undo Segment,这个是写入过程中trx_undo_add_page的逆操作。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-14 16:38:21 | 显示全部楼层 来自 中国河北衡水
可以知道在Crash前,最后持有这个Undo Segment的事务状态。如果是TRX_UNDO_ACTIVE,说明当时事务需要回滚,否则说明事务已经结束,可以继续清理Undo Segment的逻辑。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-15 13:23:43 | 显示全部楼层 来自 中国河北衡水
作为存储历史版本的Undo Record,其中记录的trx_id就是做这个可见性判断的,对应的主索引的Record上也有这个值。当一个读事务拿着自己的ReadView访问某个表索引上的记录时
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-16 14:03:43 | 显示全部楼层 来自 中国河北衡水
浅析数据库并发控制机制中提到过,为了避免只读事务与写事务之间的冲突,避免写操作等待读操作,几乎所有的主流数据库都采用了多版本并发控制(MVCC)的方式,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-17 17:09:06 | 显示全部楼层 来自 中国河北衡水
同时可以看出,Insert类型Undo Record中只记录了对应的主键值:id=1,而Update类型的Undo Record中还记录了对应的历史版本的生成事务Trx_id,以及被修改的field a的历史值。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-18 09:07:33 | 显示全部楼层 来自 中国河北衡水
而对于像Undo Log 3这种比较长的Undo Log可能会分配多个Undo Page来存放。需要注意的是Undo Page的复用只会发生在第一个Page。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-18 09:58:34 | 显示全部楼层 来自 中国河北衡水
每一时刻一个Undo Segment都是被一个事务独占的。每个写事务都会持有至少一个Undo Segment,当有大量写事务并发运行时,就需要存在多个Undo Segment。
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-18 18:36:22 | 显示全部楼层 来自 中国河北衡水
InnoDB中的事务可能会由用户主动触发Rollback;也可能因为遇到死锁异常Rollback;或者发生Crash,重启后对未提交的事务回滚。在Undo层面来看,这些回滚的操作是一致的
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-19 15:12:19 | 显示全部楼层 来自 中国河北衡水
作为存储历史版本的Undo Record,其中记录的trx_id就是做这个可见性判断的,对应的主索引的Record上也有这个值。当一个读事务拿着自己的ReadView访问某个表索引上的记录时,
免费领取2000元阿里云代金券 https://www.aliyun.com/minisite/goods?userCode=2a7uv47d
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2022-11-19 15:52:38 | 显示全部楼层 来自 中国河北衡水
会通过比较Record上的trx_id确定是否是可见的版本,如果不可见就沿着Record或Undo Record中记录的rollptr一路找更老的历史版本。
免费领取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-26 04:32 , Processed in 0.067525 second(s), 27 queries , Gzip On.

返回顶部