InnoDB引擎——7.事物篇

探讨InnoDB引擎中事物的五种类型及其特性,包括扁平事物、带有保存点的扁平事物、链事物、嵌套事物和分布式事物。详解事物的原子性、一致性、隔离性和持久性如何通过redo和undo日志实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

InnoDB引擎——7.事物篇
众所周知,数据库的事物非常重要
上篇介绍锁,讨论了事物的隔离性,本章关注事物的原子性。
InnoDB引擎默认是READ REPEATABLE隔离级别.

隔离性=并发控制=可串行化=锁等

事物类型:(1)扁平事物(2)带有保存点的扁平事物(3)链事物(4)嵌套事物(5)分布式事物

(1)扁平事物是最简单的一种,所有操作处于同一层次。
(2)带有保存点的扁平事物,保存点用来通知系统应该记住当前事物的状态,以便回滚的时候,能回到保存点。SAVA WORK函数
(3)链式事物的思想是:在提交一个事物时,释放不需要的数据对象,将必要的处理上下文隐式的传给下一个要开始的事物。注意:提交事物和开始下一个事物合并为一个原子操作,链式事物的回滚仅限于当前事物,只能恢复到最近的一个保存点。
(4)嵌套事物:由一个顶层事物控制着各个层次的事物,顶层事物下嵌套的事物被称为子事物。想要实现事物间的并行性,需要真正支持的嵌套事物。
(5)分布式事物:在一个分布式系统中运用扁平事物,因此,需要根据数据所在位置访问网络中的不同节点。

InnoDB引擎支持扁平事物,带有保存点事物,链事物,分布式事物。

事物的隔离性由锁来实现,ACD由redo log,和undo log来完成,redo log保证事物的原子性和持久性,undo log用来保证事物的一致性。

redo恢复提交事物修改的页操作,而undo回滚行记录到某个特定的版本,redo通常是物理日志,记录的是页的物理修改操作,undo是逻辑日志,根据每行记录进行记录。

redo log用来保证事物的持久性,undo log 用来帮助事物回滚及MVCC功能。

innodb_flush_log_at_trx_commit可以设置为0或2来提高事物的提交性能(但是)

还有一种二进制日志,用来进行(PIT)的恢复和主从复制环境的建立

log block都是以512字节进行存储的,重做日志块大小和磁盘扇区大小一样都是512字节。(InnoDB引擎存储管理是基于页的)

LSN(Log Sequence Number):日志序列号。记录的是重做日志的总量。

undo:对数据库修改时,不但会产生redo,还会产生一定量的undo。redo存放在重做日志文件中,undo存放在数据库内部一个特殊段中,这个段称为undo段,undo段位于共享表空间内。undo是逻辑日志,所有修改都被逻辑取消了,但是数据结构和页本身在回滚之后可能大不相同。

undo还有一个作用就是MVCC,当用户读取一行时,若该记录已经被其他事物占用,当前事物可以通过undo读取之前版本的行版本信息,实现非锁定读取,undo log也会产生redo log,因为undo log也需要持久性的保护

待更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值