ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《innodb存储引擎》学习笔记 chapter13 事务

2021-01-30 16:01:28  阅读:137  来源: 互联网

标签:事务 undo 链表 trx innodb 笔记 chapter13 日志 id


acid
隔离级别
事务系统段(物理):事务、回滚段段头、mysql二进制位置(启动二进制文件时,数据库与存储引擎一致性)、双写段,四者信息

内存
事务系统对象
trx_sys_struct:{

双写对象 段头
活跃事务链表(有序)
内部事务链表
回滚段对象数组
回滚段内存对象链表
最近使用回滚段
快照链表
}

单个事务对象
事务信息

undo日志(事务提供互斥量)
read_view
trx_struct{
type:user、purge
state:notstart、active、commit(mem)
id
进入commit(mem)全剧最大trx id
mysqllog name&offset
事务link
保存点
回滚段
insert update undo日志
roll limit:回滚到的undo日志
undo_no_arr
持有锁链表
等待的锁
死锁标记
readview对象链表

}

双写段:保证至少一个副本有效
分配空间:跳过碎片页,保证写入顺序(碎片页不顺序)

内存结构trx_doublewrite_t(buffer) 全局:trx_doublewrite
{
mutex
block1、2 对象第一个第二个区开始的page no
write buffer

}

undo日志:原子性(back),一致性非锁定读(快照)
实现:
回滚段:undo段段头在页中offset
段头信息保存在相应段对象中

{
history&size:已提交事务链表(purge可回收)
}
对象
{
id
mutex
段头页&offset
最大undo页数量、当前
update\insert undo 日志链表
最近未被purge的事务编号、undo日志位置(page no &offset)
}

undo段(undo页集合)
undo log 段头(只存在于第一个undo页中)
undo log 页头(类型:insert、delete; 页中最新事务undo日志位置; 空闲空间offset; 页链表)
undo log 日志
(创建undo日志时需记录重做日志)
trx_undo_struct{
id
type
state
事务id
ddl mark
ddl 表id
回滚段
日志页 spaceid
undo log header位置:表空间、页offset
last page no
页 size
isempty
最后一个undo log 的位置(页 offset、缓冲池页)
最后一个undo log 的 undo no
}

undo页可重用,

undo记录header+ record
逻辑日志(不能将页回滚,防止影响其他事务)
header{
事务id
del mark
ddl?
ddl table id
pre next header

}
insert update单独段

record:
insert:不需要purge(因为对其他事务不可见),提交后立即删除
update、delete:需要
{
回滚指针
记录id

purge:
删del mark记录(判断快照),触发删段
将日志以commit顺序 存放在history link

内存对象:
trx_purge_struct{

}

回滚段history与undo段 需在一个mtr
标记删除页(防中断)

rollback
rollPtr——undo log record——上一版本ptr
回滚整个事务、回滚保存点、

commit
回滚也需要提交,释放事务资源:undo段、锁、readview。刷新重做日志
mysql事务系统段更新

标签:事务,undo,链表,trx,innodb,笔记,chapter13,日志,id
来源: https://www.cnblogs.com/qmc1024/p/14349323.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有