gydtep 发表于 2022-11-18 18:54:36

回滚的入口是函数row_undo,其中会先调用trx_roll_pop_top_rec_of_trx获取并删除该事务的最后一条Undo Record。如下图例子中的Undo Log包括三条Undo Records,

gydtep 发表于 2022-11-19 10:08:35

完成回滚的Undo Log部分,会调用trx_roll_try_truncate进行回收,对不再使用的page调用trx_undo_free_last_page将磁盘空间交还给Undo Segment,这个是写入过程中trx_undo_add_page的逆操作。

gydtep 发表于 2022-11-20 12:06:13

除此之前还会记录该Rollback Segment中已提交事务的History List,后续的Purge过程会顺序从这里开始回收工作。

gydtep 发表于 2022-11-21 12:08:47

InnoDB中的事务可能会由用户主动触发Rollback;也可能因为遇到死锁异常Rollback;或者发生Crash,重启后对未提交的事务回滚。在Undo层面来看,

gydtep 发表于 2022-11-21 19:11:22

我们已经知道,InnoDB在Undo Log中保存了多份历史版本来实现MVCC,当某个历史版本已经确认不会被任何现有的和未来的事务看到的时候,就应该被清理掉。因此就需要有办法判断哪些Undo Log不会再被看到。

gydtep 发表于 2022-11-21 20:30:30

,因此所有的读事务都一定能被Index中的版本或者第一个Undo历史版本满足,不需要更老的Undo,因此整个Transaction J的Undo Log都可以清理了。

gydtep 发表于 2022-11-22 13:27:31

需要注意的是,Undo Truncate的动作并不是每次都会进行的,它的频次是由参数innodb_rseg_truncate_frequency控制的,也就是说要攒innodb_rseg_truncate_frequency个batch才进行一次

gydtep 发表于 2022-11-22 20:45:50

双11期间,预计阿里张北数据中心将使用绿电近3000万千瓦时,减排二氧化碳2.6万吨。公开数据显示,2021年1-9月,阿里巴巴共交易绿电2.48亿千瓦时。

gydtep 发表于 2022-11-23 15:24:02

全栈式数字供应链技术创新,助力提升商业效率
数字供应链为行业与商家提供端到端的数字供应链解决方案,实现从采购到流通、从商家到消费者的全链路场景的覆盖。

gydtep 发表于 2022-11-24 09:45:54

在过去三年多时间,阿里巴巴在技术生态中积极推动IPv6超大规模部署和应用,截止2021年10月,集团应用月活IPv6用户已经超过6亿。
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: 阿里云服务器2核2G低至49.68元/年