Day72【概念解析】InnoDB Undo Tablespace
行业概念

Day72【概念解析】InnoDB Undo Tablespace

· 约 1,154 字 · 阅读约 6 分钟
目录

整理定义

中文名称:InnoDB 撤销表空间

英文名称:InnoDB Undo Tablespace

image

image

复述展开

什么是Undo Tablespace?

Undo Tablespace是InnoDB存储引擎用来存储undo日志的地方。Undo日志记录了事务发生之前的数据状态,如果一个事务需要回滚,InnoDB就会使用undo日志来恢复数据到事务开始前的状态。此外,undo日志也用于MVCC中,以提供事务的隔离级别保证,允许读取事务开始前的数据版本。

Undo日志的作用

Undo日志主要有两个作用:

  1. 事务回滚: 当事务执行失败或者被显式地回滚时,undo日志可以用来撤销已经执行的操作,确保数据的一致性。

  2. 多版本并发控制(MVCC): 在读取旧数据版本时,即使数据已经被其他事务修改,undo日志也能提供一个数据的快照,这样就可以实现非锁定读取。

Undo Tablespace的结构

Undo Tablespace由多个undo日志段组成,每个段可以包含多个undo日志。当InnoDB初始化时,会创建两个undo表空间,但是用户也可以根据需要配置更多的undo表空间。

管理Undo Tablespace

在MySQL 5.7及以后的版本中,Undo Tablespace可以被配置为独立的表空间,这样做的好处是可以更好地管理磁盘空间,提高性能。管理员可以根据数据库的工作负载来增加或减少undo表空间的数量。

如何学习Undo Tablespace?

  1. 官方文档: 阅读MySQL官方文档中关于InnoDB Undo Tablespace的章节,这是获取最权威、最详细信息的途径。

  2. 在线教程和课程: 有许多在线资源提供了关于InnoDB和Undo Tablespace的教程和课程,这些可以帮助你从基础到高级的知识。

  3. 实践操作: 在自己的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,但在某些情况下可能会有所不同

参考文档:

MySQL :: MySQL 8.0 Reference Manual :: 15.6.3.4 Undo Tablespaces

相关文章