暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Innodb执行引擎及MVCC原理
694
3页
1次
2020-06-07
5墨值下载
一、
InnoDB
实现事务四大特性
原子性
(Atomicity)
:原子性指整个数据库事务是不可分割的工作单位。事务中所有的数据库
操作,要么全部提交成功,要么全部失败回滚。
一致性
(Consistency)
:数据库总是从一个一致性的状态转换到另一个一致性的状态。
隔离性
(Isolaon)
:事务的隔离性要求每个读写事务的对象对其他事务的操作对象能相互分
离,即该事务提交前对其他事务都不可见。
(Durability)
使
能将数据恢复。
二、
InnoDB
的实现原理
(一)
InnoDB
如何保证原子性
(Atomicity)
在事里任对数的修都会一个
undo log
,然进行据的改,果出错误
存储引擎会利用
undo log
的备份数据恢复到事务开始之前的状态。
(二)
InnoDB
如何保证一致性
(Consistency)
事务的原子性和隔离性保证了数据的一致性
(三)
InnoDB
如何保证隔离性
(Isolaon)
InnoDB
REPEATABLE READ + Next-Key Locking
InnoDB
MVCC
了数据库的隔离性,不出现并发一致性问题,且理论上效率高于
SERIALIZABLE
隔离级别。
(四)
InnoDB
如何保证持久性
(Durability)
InnoDB
存储引擎在启动时不管上次数据库运行时是否正常关闭,都会尝试通
redo log
行恢复操作。
三、并发一致性问题
脏读:读到未提交的数据
不可重复读:读到已提交的数据;同样的条件,第一次与第二次读的值不同。
幻读:同样的条件,第一次与第二次读出来的记录不同。
丢失修改 : 事务
2
提交的结果破坏了事务
1
提交的结果
,
导致事务
1
进行的修改丢失。
四、隔离级别
READ UNCOMMITTED
(读提交:事中的改,使没提交对其事务是可
的。任何操作都不加锁。
READ COMMITTED
读已一个已经务所。换句话
说,一个事务所做的修改在提交之前对其它事务是不可见的。数据的读取不加锁,但数
的写入、修改和删除都加锁。
REPEATABLE READ
MVCC
机制让数据变得可重复读。
SERIALIZABLE
(可串行化):强制事务串行执行。全部操作加悲观锁。读加共享锁,写加排
他锁。
五、
Undo log
Undo
意为取消,以撤销操作为目的,返回指定某个状态的操作。
1
Undo log
指事前,据之
,
首先的数
(Undo Log)
2
Undo Log
ROLLBACK
语句,
MySQL
可以利用
Undo Log
中的备份将数据恢复到事务开始之前的状态。
3
MySQL InnoDB
通过
Undo log
实现
MVCC
:事务未提交之前,
Undo log
保存了未提交
前的版本数据,
Undo log
中的数据可作为数据旧版本快照供其他并发事务进行快照读。
快照读
SQL
读取的数据是快照版本,也就是历史版本,普通的
SELECT
就是快照读。
当前读
SQL
读取的数据是最新版本。通过锁机制来保证读取的数据无法通过其他事务进行修改。
UPDATE
DELETE
INSERT
SELECT … LOCK IN SHARE MODE
SELECT … FOR UPDATE
都是当前
读。
假设有
A
B
两个数据,值分别为
1,2
事务开始
.
记录
A=1
undolog.
修改
A=3.
记录
B=2
undolog.
修改
B=4.
undolog
写到磁盘。
将数据写到磁盘。
事务提交
这里有一个隐含的前提条
:
数据都是先读到内存中,然后修改内存中的数据,最后将数据
写回磁盘。
之所以能同时保证原子性和持久化,是因为以下特
新数据前记录
Undo log
为了保证持久性,数据在事务提交前写到磁盘。只要事务成功提交,数据然已
持久化。
Undo log
必须先于数据持久化到磁盘。如果在
G,H
间系统崩溃
undo log
整的,可以
用来回滚事务。
如果
1-8
系统崩溃
,
因为数据没有持久化到磁盘。所以磁盘上的数保持在事
开始前的状态。
MVCC
Mul Version Concurrency Control (
),
访
(
)
正在处理的数据做多版本管理。以实现写操作堵塞的同时,然可以进行读操作。
InnoDB
为每行记录都实现了两个重要隐藏字段,用来实现
MVCC
6
字节的事务
ID
DB_TRX_ID
,
每处理一个事务,其值
+1
7
字节的回滚
DB_ROLL_PTR
),指
rollback segment
(回滚)的一条
undo log
记录。
of 3
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜