MVCC原理
2021-06-10 18:01:30 0 举报
图文分析MVCC事务原理
作者其他创作
大纲/内容
log buffer
兼容
1
更新事务007提交
......
此刻007事务开始
此刻007事务提交
redo log file
45k
冲突
10
更新事务007开始
data
2
...
4
IX
IS
trx_id
select balance from table where id = 1;
undo log file
9
card_name
7
3
select balance from table where id = 1;
再次执行select
0x000000F
查询事务110开始
执行更新
512k
roll pointer
id
卡A
MySQL锁的兼容性矩阵结果
查询事务008开始
由于m_ids跟第一次获取的m_ids还是一样,所有获取到的值仍为10
5
001
8
由于007事务已经提交,因此获取到的值为300
003
fsync()
InnoDB引擎
S
例子:某一时刻,账户表中id为1的数据行记录的一段版本链,trx_id为事务ID。
可重复读隔离级别下MVCC
执行select操作
获取到当前不活跃值中最新的记录,即事务001操作之后的值10
0x0000002
当前事务readview第一次获取时的活跃事务id
0x0000001
300
redo log
X
1022k
50
update table set balance = 300 where id = 1;
OS buffer
磁盘空间
readview最新活跃事务id
002
007
150
undo log
读已提交隔离级别下MVCC
顺序写
readview活跃事务id
内核空间
balance
6
用户空间
随机写
收藏
0 条评论
下一页