龙空技术网

2020-12-15:mysql的回滚机制是怎么实现的?

福大大架构师每日一题 46

前言:

现时小伙伴们对“mysql回收空间”大致比较关切,小伙伴们都需要知道一些“mysql回收空间”的相关文章。那么小编同时在网络上搜集了一些关于“mysql回收空间””的相关知识,希望朋友们能喜欢,咱们快快来学习一下吧!

福哥答案2020-12-15:

[答案来自此链接:]()

在 MySQL 中,恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。

MySQL的事务是有redo和undo的,redo操作的所有信息都是记录到 redo_log中,也就是说当一个事务做commit操作时,需要先把这个事务的操作写到redo_log中,然后再把这些操作flush到磁盘上,当 出现故障时,只需要读取redo_log,然后再重新flush到磁盘就行了。

而对于undo就比较麻烦,MySQL在处理事务时,会在数据共享 表空间里申请一个段叫做segment段,用保存undo信息,当在处理rollback,不是完完全全的物理undo,而是逻辑undo,就是说会对之 前的操作进行反操作,但是这些共享表空间是不进行回收的。这些表空间的回收需要由mysql的master thread进程来进行回收。

标签: #mysql回收空间 #mysql 手动开启事务 回滚 #mysql存储过程回滚 #mysql事物回滚 #mysql哪些操作可以回滚