InnoDB数据的三种log类型和作用
InnoDB数据的三种log类型和作用
一篇方法教程,与您分享InnoDB数据的三种log类型和作用方面的内容,下面来一起了解一下吧。
undolog
undolog是InnoDB的日志,又称撤销日志文件,属于逻辑日志。undolog内存数据存储在buffer pool中,磁盘数据则存储在undo tablespace。
undolog保存类型为FIL_PAGE_UNDO_LOG在undo page中,一个undo page可以保存多条undolog记录。每条undolog记录包含该undolog在undo page的页内地址、undolog对应的记录所在的tableId(tableId全局唯一)、undolog类型、undolog编号、下一条undolog的地址、old_trx_id、old_roll_pointer、主键的每个列占用的存储空间大小和真实值、被修改字段的修改前后信息等。
undolog提供回滚和多个行版本控制(MVCC)的两个能力,保证了事务的原子性:
- 回滚:undolog分为3类,包括TRX_UNDO_INSERT_REC、TRX_UNDO_DEL_MARK_REC、TRX_UNDO_UPD_EXIST_REC,分别对应增、删、改操作。上文讲到每一行数据有两个隐藏字段trx_id和roll_pointer,它们主要作用于数据库的事务。所谓的事务就是指对一个或多个数据库的一系列操作,这些操作需保证ACID的规则。当某个事务执行过程中对某个表执行了增、删、改操作,InnoDB会给该事务分配一个递增的独一无二的trx_id(全局变量,每增加256时会刷盘),而且会生成对应的undolog,而roll_pointer就是一个指向记录对应的undolog的一个指针,数据行会存储最近提交的trx_id和roll_pointer。事务开启后,在本事务或其他事务(根据事务隔离级别)对该数据行的一次次修改中,生成的undolog会记录old_trx_id(修改该记录的上一次的trx_id)和old_roll_pointer(对应undolog地址),这样就生成了一个版本链,当需要回滚时就能沿着old_trx_id和old_roll_pointer找到一条记录的所有历史版本,从而实现事务的回滚能力。
- MVCC:InnoDB复用了undolog中已经记录的历史版本数据来实现MVCC机制。当用户读取一行记录时,若该记录已经被其他事务占用,当前事务可以通过undolog读取之前的行版本信息,以此实现非锁定读取。此外,根据trx_id是递增的特性,InnoDB还引入了ReadView机制,用于保存创建事务时的活跃trx_id。ReadView有三个属性,分别是m_ids(活跃的trx_id列表)、min_trx_id(活跃的最小trx_id)、max_trx_id(下一个该分配的trx_id),基于这三个属性,实现了READ COMMITTED和REPEATABLE READ两种隔离级别。
因为一个事务可能包含多个增、删、改操作,为了提高并发执行多个事务写入undolog的性能,InnoDB将各个事务的各种操作通过上文提到的undo segment分开存储(undo segment的undo page通过链式存储,即每个事务都有自己的insert undo链表、update undo链表),而每个段的第一个undo page通过TRX_UNDO_STATE属性存储了该段的一些事务信息,取值有下面几个:
相关阅读
-
服务器响应时间是什么? 如何优化服务器响应时间?
跟大家聊一聊服务器响应时间是什么的相关介绍,一起跟随小编看看吧! 服务器响应时间是衡量一个网站或应用程序性能的重要指标之一。它指的是从客户端发送请求到服务器响应请求所需的
-
视频网站如何选择国外服务器? 如何选择国外服务器来建设视频网站
为网友解答视频网站如何选择国外服务器的相关话题,接下来小编为网友介绍。 地理位置 :选择靠近目标用户群体的国外服务器位置是至关重要的。若用户主要集中在中国以外的地区,因您应
-
OSPFv3支持的网络类型有哪几种
IT电脑小知识篇,关于OSPFv3支持的网络类型有哪几种的电脑方面的小经验,下面来一起了解一下吧。 在OSPFv3(Open Shortest Path First version 3)协议中,网络类型是一种关键概念,影响着路由器之间
-
办网站需要什么手续和证件 建立网站需要的条件
正文核心介绍:办网站需要什么手续和证件和建立网站需要的条件IT技巧方面的经验,接下来一起来看看吧。 目前许多企业都在进行网站建设,要知道网站建设时间与做网站建设步骤,前期做


