站长蚂蚁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
楼主: gydtep2002
打印 上一主题 下一主题

免费领取阿里云大礼包3150元+新客享0.26折起优惠

[复制链接]

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
471#
 楼主| 发表于 2023-9-12 09:08:12 | 只看该作者
我们也在做AI方面的深度创新,超大规模模型现在是AI行业的重点,阿里达摩院实现了全球首个10万亿参数的多模态大模型M6,
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
472#
 楼主| 发表于 2023-9-13 10:34:44 | 只看该作者
在细节上还是希望用抽象的实现思路代替具体的代码。本文基于MySQL 8.0,但在大多数的设计思路上MySQL的各个版本都是一致的。
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
473#
 楼主| 发表于 2023-9-14 08:33:52 | 只看该作者
其中Undo Number是Undo的一个递增编号,Table ID用来表示是哪张表的修改。下面一组Key Fields的长度不定,
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
474#
 楼主| 发表于 2023-9-15 09:20:04 | 只看该作者
其中记录的是这个Undo Segment的状态,比如TRX_UNDO_CACHED、TRX_UNDO_TO_PURGE等;这个Undo Segment中最后一条Undo Record的位置;这个FSP Segment的Header,以及当前分配出来的所有Undo Page的链表。
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
475#
 楼主| 发表于 2023-9-17 09:14:11 | 只看该作者
一方面避免了ibdata1的膨胀,方便undo空间回收,另一方面也大大增加了最大的Rollback Segment的个数,增加了可支持的最大并发写事务数。如下图所示:
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
476#
 楼主| 发表于 2023-9-18 07:54:53 | 只看该作者
无论是Rollback还是Commit,在这个修改对应的Redo落盘之后,就可以返回用户结果,并且Crash Recovery之后也不会再做回滚处理。
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
477#
 楼主| 发表于 2023-9-19 08:25:17 | 只看该作者
TRX_UNDO_INSERT_REC类型的Undo回滚在row_undo_ins中进行,insert的逆向操作当然就是delete,根据从Undo Record中解析出来的主键,
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
478#
 楼主| 发表于 2023-9-20 09:26:01 | 只看该作者
否则,就会解析对应的Undo Record,恢复出trx_id、指向下一条Undo Record的rollptr、主键信息,diff信息update vector等信息。
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
479#
 楼主| 发表于 2023-9-21 10:22:30 | 只看该作者
那么,如果一个事务的trx_no小于当前所有活跃的读事务Readview中的这个m_low_limit_no,说明这个事务在所有的读开始之前已经提交了,其修改的新版本是可见的, 因此不再需要通过undo构建之前的版本,
回复

使用道具 举报

4

主题

1899

帖子

7570

积分

老年蚂蚁

Rank: 10Rank: 10Rank: 10

积分
7570
480#
 楼主| 发表于 2023-9-22 10:15:14 | 只看该作者
处理每一条Undo Record。之后继续调用trx_purge_rseg_get_next_history_log从purge_queue中获取下一条trx_no最小的Undo Log,并且将当前Rollback Segment上的下一条Undo Log继续push进purge_queue,等待后续的顺序处理。
回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|站长蚂蚁-站长之家 ( 赣ICP备15000807号

GMT+8, 2024-11-23 20:21

Powered by 蚂蚁站长论坛

© 2007-2024 bbs.jzmayi.com

快速回复 返回顶部 返回列表