扫码阅读
手机扫码阅读

深入理解InnoDB存储引擎:逻辑存储结构、事务原理

147 2024-07-17

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:深入理解InnoDB存储引擎:逻辑存储结构、事务原理
文章来源:
springboot葵花宝典
扫码关注公众号
深入理解InnoDB存储引擎摘要

今日目标

  • 理解逻辑存储结构
  • 理解事务原理
  • 理解 redo log
  • 理解 undo log

1. 逻辑存储结构

InnoDB存储引擎的逻辑存储结构包括表空间、段、区、页和行。表空间是最高层结构,可以有多个,存储记录和索引。每张表默认有自己的表空间文件。段管理多个区,分为数据段和索引段,对应B+树的叶子节点和非叶子节点。区是1M大小的表空间单元,包含64个连续页,而页是16KB大小的磁盘管理单元。行是数据存放的基本单位,包含两个隐藏字段Trx_id和Roll_pointer,分别用于记录事务ID和指向修改前版本的undo日志。

2. 事务原理

事务是一组不可分割的操作集合,遵循ACID属性,分别代表原子性、一致性、隔离性和持久性。InnoDB通过redo log和undo log来保证原子性、一致性和持久性,而隔离性通过锁和MVCC实现。

2.1. 事务介绍

事务处理意味着一系列操作要么全部成功,要么全部失败,确保数据库状态的一致性。

2.1.1. 事务特性

原子性保证事务为最小操作单元,一致性确保事务执行后数据库状态一致,隔离性控制事务相互影响,持久性确保事务提交后改变永久保存。

3. redo log

redo log用于记录数据页的物理修改,保证事务持久性。它由重做日志缓冲和重做日志文件组成,分别存储在内存和磁盘上。redo log缓冲中记录的数据页变化,在事务提交时刷新到磁盘文件,确保即使发生错误也能依靠redo log恢复数据。

3.1. redo log作用

没有redo log可能导致数据没有实时持久化,出错时无法恢复。redo log通过WAL(Write-Ahead Logging)先写日志后写磁盘,提高效率并保证持久性。

4. undo log (回滚日志)

undo log记录数据修改前的信息,提供回滚操作和支持MVCC。与redo log不同,它是逻辑日志,记录相反操作的信息。事务提交后,undo log不会立即删除,因为可能用于MVCC,它存储在回滚段中。

想要了解更多内容?

查看原文:深入理解InnoDB存储引擎:逻辑存储结构、事务原理
文章来源:
springboot葵花宝典
扫码关注公众号