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

[国内信息] 大佬谈阿里云服务器优惠技巧! [复制链接]
查看:287307 | 回复:667

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-10 18:23:46 | 显示全部楼层 来自 中国河北衡水
在设计数据库时,我们假设数据库可能在任何时刻,由于如硬件故障,软件Bug,运维操作等原因突然崩溃。这个时候尚未完成提交的事务可能已经有部分数据写入了磁盘,如果不加处理,会违反数据库对Atomic的保证,也就是任何事务的修改要么全部提交,要么全部取消。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-11 14:29:33 | 显示全部楼层 来自 中国河北衡水
每当InnoDB中需要修改某个Record时,都会将其历史版本写入一个Undo Log中,对应的Undo Record是Update类型。当插入新的Record时,还没有一个历史版本,但为了方便事务回滚时做逆向(Delete)操作,这里还是会写入一个Insert类型的Undo Record。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

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

Transaction Id记录了产生这个历史版本事务Id,用作后续MVCC中的版本可见性判断
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-12 07:58:23 | 显示全部楼层 来自 中国河北衡水
如上所示,是一个Undo Segment的示意图,每个写事务开始写操作之前都需要持有一个Undo Segment,一个Undo Segment中的所有磁盘空间的分配和释放,也就是16KB Page的申请和释放,都是由一个FSP的Segment管理的,这个跟索引中的Leaf Node Segment和Non-Leaf Node Segment的管理方式是一致的,这部分之后会有单独的文章来进行介绍。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-12 10:25:03 | 显示全部楼层 来自 中国河北衡水
每一时刻一个Undo Segment都是被一个事务独占的。每个写事务都会持有至少一个Undo Segment,当有大量写事务并发运行时,就需要存在多个Undo Segment。InnoDB中的Undo 文件中准备了大量的Undo Segment的槽位,按照1024一组划分为Rollback Segment。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-12 14:05:37 | 显示全部楼层 来自 中国河北衡水
写事务开始时,会先通过trx_assign_rseg_durable分配一个Rollback Segment,该事务的内存结构trx_t也会通过rsegs指针指向对应的trx_rseg_t内存结构,这里的分配策略很简单,就是依次尝试下一个Active的Rollback Segment。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-13 08:07:42 | 显示全部楼层 来自 中国河北衡水
拿到一个Undo Record之后,自然地,就是对其中内容的解析,这里会调用row_undo_ins_parse_undo_rec,从Undo Record中获取修改行的table,解析出其中记录的主键信息,如果是update类型,还会拿到一个update vector记录其相对于更新的一个版本的变化。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-13 10:53:01 | 显示全部楼层 来自 中国河北衡水
前面提到过,作为Logical Log,Undo中记录的其实是前后两个版本的diff信息,而读操作最终是要获得完整的Record内容的,也就是说这个沿着rollptr指针一路查找的过程中需要用Undo Record中的diff内容依次构造出对应的历史版本,这个过程在函数row_search_mvcc中
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-13 11:36:33 | 显示全部楼层 来自 中国河北衡水
其中trx_undo_prev_version_build会根据当前的rollptr找到对应的Undo Record位置,这里如果是rollptr指向的是insert类型,或者找到了已经Purge了的位置,说明到头了,会直接返回失败。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

141

主题

9万

帖子

1030

积分

落伍者(两全齐美)

Rank: 2

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

落伍者落伍手机绑定

 楼主| 发表于 2021-12-13 19:36:42 | 显示全部楼层 来自 中国河北衡水
那么,如果一个事务的trx_no小于当前所有活跃的读事务Readview中的这个m_low_limit_no,说明这个事务在所有的读开始之前已经提交了,其修改的新版本是可见的, 因此不再需要通过undo构建之前的版本,这个事务的Undo Log也就可以被清理了。
腾讯云爆款2核2G3M云服务器首年 61元,叠加红包再享折上折,官网活动网址:https://curl.qcloud.com/UHULq3SQ
回复 支持 反对

使用道具 举报

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

论坛客服/商务合作/投诉举报: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-6-4 12:40 , Processed in 0.103122 second(s), 26 queries , Gzip On.

返回顶部