🗒️Day72【概念解析】InnoDB Undo Tablespace
00 分钟
2023-12-2
2023-12-5
type
status
date
slug
summary
tags
category
icon
password

整理定义

中文名称:InnoDB 撤销表空间
英文名称:InnoDB Undo Tablespace
 
MySQL 5.7版本
MySQL 5.7版本
MySQL 8.0版本
MySQL 8.0版本

复述展开

什么是Undo Tablespace?

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

Undo日志的作用

Undo日志主要有两个作用:
  1. 事务回滚: 当事务执行失败或者被显式地回滚时,undo日志可以用来撤销已经执行的操作,确保数据的一致性。
  1. 多版本并发控制(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的章节,这是获取最权威、最详细信息的途径。
  1. 在线教程和课程: 有许多在线资源提供了关于InnoDB和Undo Tablespace的教程和课程,这些可以帮助你从基础到高级的知识。
  1. 实践操作: 在自己的MySQL环境中实际操作,比如创建新的

理解体会

  • MySQL在初始化时会创建两个默认的undo表空间,用于存储必要的回滚段,以便可以处理SQL语句。
  • 这些表空间通常位于由innodb_undo_directory变量指定的目录中,如果未指定,则在数据目录中创建。
  • 默认的undo表空间文件被命名为undo_001undo_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
 
上一篇
Day73 【概念解析】InnoDB Temporary Tablespace
下一篇
Day71【概念解析】 InnoDB General Tablespace

评论
Loading...