InnoDB数据的三种log类型和作用(2)
InnoDB数据的三种log类型和作用
- TRX_UNDO_ACTIVE: 活跃状态,即一个活跃的事务正在往这个段里边写入undolog。
- TRX_UNDO_CACHED:被缓存的状态,即该状态下的段等待着之后被其他事务重用。
- TRX_UNDO_TO_FREE: 可以释放,对于insert undo链表来说,如果在它对应的事务提交之后,该链表不能被重用,那么就会处于这种状态。
- TRX_UNDO_TO_PURGE: 可以清理,对于update undo链表来说,如果在它对应的事务提交之后,该链表不能被重用,那么就会处于这种状态。
- TRX_UNDO_PREPARED: 准备状态,还未提交。
在事务未提交前TRX_UNDO_STATE是TRX_UNDO_PREPARED状态,事务提交后,根据不同的操作类型转换成TRX_UNDO_CACHED、TRX_UNDO_TO_FREE或者TRX_UNDO_TO_PURGE状态,表示满足一定条件后可以清理这些undolog,事务如果需要回滚的话,必须是TRX_UNDO_ACTIVE或者TRX_UNDO_PREPARED状态,故事务的提交是由该属性判断的,详情见下文的事务执行流程。
redolog
redolog是InnoDB存储引擎层的日志,又称重做日志文件,属于物理日志。redolog内存数据存储在log buffer中,磁盘数据则存储在以ib_logfile0、ib_logfile1…命名的日志文件中。
上文提到,InnoDB通过buffer pool(包括change buffer、undolog)提高读写性能,但如果进程或机器崩溃会导致缓存丢失,为了能实现故障恢复就引入了redolog。事务在执行过程中对数据库所做的所有修改(聚集索引、二级索引、undolog等修改)都会生成对应的redolog,并保证redolog早于缓存落盘(WAL机制),当故障发生后,InnoDB会在重启时,通过重放redolog来恢复所做的修改。
到MySQL8.0为止,为了应对各种各样不同的需求,InnoDB已经有多达65种(上限127种)的redolog类型用来记录各种信息,而恢复数据时需要判断不同的类型,来做对应的解析。redolog长度是动态的,常见的数据结构包括日志类型、Space ID、页号、数据页中的偏移量、修改的长度和具体的值。

根据redolog不同的作用对象,可以将这些类型划分为三个大类:作用于Page、作用于Space以及提供额外信息的Logic类型。redolog记录的是作用于页的,如果作用于Space,那么页号的值为0。
不管是在内存还是磁盘中,redolog都以块为单位进行存储,默认每个块占512B,等于磁盘扇区的大小,这称为redolog block。每个redolog block由3部分组成:日志块头(12B)、日志块尾(4B)和日志主体(492B),log buffer则是由若干个连续的redolog block组成的,总数不能超过1GB个(基于LSN的长度限制)。
InnoDB为了提高redolog的性能和保证数据一致性,还引入的mini-transaction机制(简称mtr),mtr就是redolog组的概念,比如对一些页面的访问、向聚簇索引或二级索引插入一条记录等操作时产生的redolog是不可分割的(插入数据如果引起索引分裂,会产生许多redolog)。每组的最后一条redolog后边会加上一条类型为MLOG_MULTI_REC_END的redolog,来标识该组的结束。
相关阅读
-
服务器响应时间是什么? 如何优化服务器响应时间?
跟大家聊一聊服务器响应时间是什么的相关介绍,一起跟随小编看看吧! 服务器响应时间是衡量一个网站或应用程序性能的重要指标之一。它指的是从客户端发送请求到服务器响应请求所需的
-
视频网站如何选择国外服务器? 如何选择国外服务器来建设视频网站
为网友解答视频网站如何选择国外服务器的相关话题,接下来小编为网友介绍。 地理位置 :选择靠近目标用户群体的国外服务器位置是至关重要的。若用户主要集中在中国以外的地区,因您应
-
OSPFv3支持的网络类型有哪几种
IT电脑小知识篇,关于OSPFv3支持的网络类型有哪几种的电脑方面的小经验,下面来一起了解一下吧。 在OSPFv3(Open Shortest Path First version 3)协议中,网络类型是一种关键概念,影响着路由器之间
-
办网站需要什么手续和证件 建立网站需要的条件
正文核心介绍:办网站需要什么手续和证件和建立网站需要的条件IT技巧方面的经验,接下来一起来看看吧。 目前许多企业都在进行网站建设,要知道网站建设时间与做网站建设步骤,前期做


