沉默的背影 X-Pacific

keep learning

针对MySQL的MVCC多版本并发控制的一些总结

MVCC

MVCC细节太多,我直接备忘一下总结:

MVCC就是通过事务的ID与行数据的版本(修改事务的ID)进行比较(通过redo log可以回溯版本)得出哪些版本的行数据可见和不可见而实现的事务隔离

一致性读

可重复读,查询只承认在事务启动前就已经提交完成的数据
读提交,查询只承认在语句启动前就已经提交完成的数据
自己版本更新的总可见(版本=事务/语句)
其他版本未提交的不可见

版本已经提交,但是是在当前版本之后创建的不可见
版本已经提交,但是在当前版本开始前提交的可见(虽然都提交,但是创建视图的点不同)

更新

更新操作中的读,只能是当前读,已经提交完成的最新版本,或者遇到行锁阻塞

开启事务

对于可重复读

1、start transaction 开始事务的语句事务开启点是在不是这句,而是第一个执行sql语句的地方
2、start transaction with consistent snapshot 开始事务的语句事务开启点在这这句

对于读提交

start transaction 和 start transaction with consistent snapshot都是以每条语句的执行创建视图

 

posted @   乂墨EMO  阅读(221)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示