type
status
date
slug
summary
tags
category
icon
password
整理定义
中文名称:InnoDB 撤销表空间
英文名称:InnoDB Undo Tablespace
![MySQL 5.7版本](https://image.kuangyichen.com/image/innodb-architecture-5-7.png?t=282f9ce8-a623-4e86-bee7-34207d529b4d)
![MySQL 8.0版本](https://image.kuangyichen.com/image/innodb-architecture-8-0.png?t=fc1e0970-0f8e-4b5f-a431-0dfd8328607f)
复述展开
什么是Undo Tablespace?
Undo Tablespace是InnoDB存储引擎用来存储undo日志的地方。Undo日志记录了事务发生之前的数据状态,如果一个事务需要回滚,InnoDB就会使用undo日志来恢复数据到事务开始前的状态。此外,undo日志也用于MVCC中,以提供事务的隔离级别保证,允许读取事务开始前的数据版本。
Undo日志的作用
Undo日志主要有两个作用:
- 事务回滚: 当事务执行失败或者被显式地回滚时,undo日志可以用来撤销已经执行的操作,确保数据的一致性。
- 多版本并发控制(MVCC): 在读取旧数据版本时,即使数据已经被其他事务修改,undo日志也能提供一个数据的快照,这样就可以实现非锁定读取。
Undo Tablespace的结构
Undo Tablespace由多个undo日志段组成,每个段可以包含多个undo日志。当InnoDB初始化时,会创建两个undo表空间,但是用户也可以根据需要配置更多的undo表空间。
管理Undo Tablespace
在MySQL 5.7及以后的版本中,Undo Tablespace可以被配置为独立的表空间,这样做的好处是可以更好地管理磁盘空间,提高性能。管理员可以根据数据库的工作负载来增加或减少undo表空间的数量。
如何学习Undo Tablespace?
- 官方文档: 阅读MySQL官方文档中关于InnoDB Undo Tablespace的章节,这是获取最权威、最详细信息的途径。
- 在线教程和课程: 有许多在线资源提供了关于InnoDB和Undo Tablespace的教程和课程,这些可以帮助你从基础到高级的知识。
- 实践操作: 在自己的MySQL环境中实际操作,比如创建新的
理解体会
- MySQL在初始化时会创建两个默认的undo表空间,用于存储必要的回滚段,以便可以处理SQL语句。
- 这些表空间通常位于由
innodb_undo_directory
变量指定的目录中,如果未指定,则在数据目录中创建。
- 默认的undo表空间文件被命名为
undo_001
和undo_002
。
- 从MySQL 8.0.14版本开始,可以在运行时动态地添加更多的undo表空间。
- undo表空间的初始大小在MySQL 8.0.23之前依赖于页面大小,而从8.0.23版本开始,通常固定为16MiB,但在某些情况下可能会有所不同
参考文档:
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day72
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。