MVCC是如何保证隔离性的

之前提到了MVCC可以一定程度上避免幻读,那具体MVCC是咋工作的呢?

需要介绍两个机制:read view和聚簇索引的两个隐藏列

read view

这个就是我们理解的快照,有四个字段,本事务id、活跃事务id列表(包含自己)、活跃事务里id最小的(还没提交的事务里最早开始的)、下一个事务id(不一定是活跃事务列表中最大值+1)

聚簇索引中的隐藏列

trx_id代表本行数据是由哪个事务更新的,undo_log是关键的版本控制指针。就是用read view里的m_ids看这条记录对当前事务可见与否,可见就读不可见就顺着链表向下找。

工作方式

可重复读是启动事务时生成一个 Read View,然后整个事务期间都在用这个 Read View。

读提交是在每次读取数据时,都会生成一个新的 Read View。

相关推荐
JosieBook3 分钟前
【数据库】2026国产时序数据库新格局与金仓的多模突围
数据库·时序数据库
羑悻的小杀马特11 分钟前
不做“孤岛”做“中枢”:拆解金仓时序库,看国产基础软件如何玩转“多模融合”
数据库·人工智能
小北方城市网11 分钟前
SpringBoot 安全认证实战(Spring Security + JWT):打造无状态安全接口体系
数据库·spring boot·后端·安全·spring·mybatis·restful
bbq粉刷匠16 分钟前
MySQL - 基础增删查改
数据库·mysql
l1t26 分钟前
DeepSeek总结的SQLite 数据库的版本更新历史摘要
数据库·人工智能·sqlite
一个天蝎座 白勺 程序猿26 分钟前
Apache IoTDB(13):数据处理的双刃剑——FILL空值填充与LIMIT/SLIMIT分页查询实战指南
数据库·sql·ai·apache·时序数据库·iotdb
一步一个脚印27 分钟前
Oracle LONG类型与CLOB类型的比较与转换
数据库·oracle
廋到被风吹走1 小时前
【数据库】【Mysql】慢SQL深度分析:EXPLAIN 与 optimizer_trace 全解析
数据库·sql·mysql
XerCis1 小时前
PostgreSQL超全指南
数据库·postgresql
数据知道1 小时前
万字详解模式(Schema):如何利用 Schema 实现PostgreSQL中开发/测试/生产环境隔离
数据库·postgresql