八股

mysql mvcc
mvcc允许多个事务同时读取同一行数据。做到了读读并行,读写并行。它是通过read view实现的,可看做是数据库的一个快照版本。
read view有几个重要参数:
m_ids:创建read view 时当前数据库活跃事务的id列表。(启动了还未提交的事务)
min_trx_id:创建read view时活跃事务的最小id值
max_trx_id:创建readview时数据库要分配给下一个事务的id,即m_ids中最大值+1
creator_trx_id:创建该read view的事务id
innodb聚集索引记录中会有两个隐藏列:
trx_id:一个事务对某条聚集索引记录改动时,会把该事务的id记录在这里
roll_pointer:每次改动时会把记录写到undo日志中,本列存的是指向旧版本记录的指针。

如下图,当隐藏列trx_id的值小于read view的min_trx_id,说明这个版本的数据是在readview创建之前就提交了,因此该版本的记录对当时事务可见。当大于max_trx_id时说明这个版本的记录是在readview创建后事务才提交的,因此对当前事务不可见
如果再min和max之间,需要判断trx_id在不在m_ids中,如果在且当trx_id等于readview的creator_id时可见,因为是当前事务创建的。如果在且不想等,说明生成该版本的事务还活跃着并且不是当前事务创建的,该版本记录对当前事务不可见。如果不在m_ids中说明生成该版本的事务已经提交,该版本记录对当前事务可见。
全部评论

相关推荐

UU们!今天想和大家聊聊一个超级热门的话题:现在到底还能不能进互联网行业?作为一个在互联网行业摸爬滚打过的过来人,真心想和你们说:这个问题真的要看你怎么看啦~📌先说结论:能进!但要更清醒地选择!最近确实听到很多关于互联网行业的负面消息,但我在参加校友会时发现:超过60%的学长学姐仍然觉得互联网是年轻人值得尝试的领域!✅为什么我觉得现在还能进?1️⃣ 行业进入精耕细作阶段虽然不像以前那样疯狂扩张,但真正优质的企业在稳步发展2️⃣ 技术融合带来新机会传统行业数字化转型催生大量岗位(医疗、教育、金融等都急需互联网人才)3️⃣ 岗位要求更清晰企业招聘更注重实际能力而非学历光环有项目经验的人才特别吃香4️⃣ 薪资依然有竞争力特别是核心岗位(产品经理、算法工程师等)薪资水平仍处各行业前列 💰📌给大家几个小建议:✔ 选择细分赛道比纠结行业更重要!跨境电商、AI应用落地、SaaS服务都是潜力股 🚀✔ 实习经历比盲目考证更重要我就是靠一段段实习拿到正式offer的!✔ 复合型能力才是王道懂业务+技术基础+沟通能力=香饽饽✔ 提前准备作品集/项目经验可以从小红书运营、个人博客开始积累✔ 关注To B方向的机会比起卷To C,To B领域竞争压力小很多哦!📌真心话:其实每个行业都有它的黄金期和调整期,关键是找到适合自己的位置。互联网就像一把双刃剑,它不会承诺安稳,但会给努力的人更多可能!记得收藏+点赞,让更多小伙伴看到这篇干货!你在考虑进入互联网行业吗?或者有什么疑问?快来评论区告诉我👇
当下环境,你会继续卷互联...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务