MVCC 在RC 和 RR 隔离等级下的工作机制
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,一.数据行隐藏列innodb为每行记录都实现了三个隐藏字段6字节的事务ID(DB_TRX_ID)7字节的回滚指针(DB_ROLL_PTR)隐藏的ID事务1修改行值过程:X锁锁定该行 -> 记录redo
千家信息网最后更新 2024年11月19日MVCC 在RC 和 RR 隔离等级下的工作机制
一.数据行隐藏列
innodb为每行记录都实现了三个隐藏字段
6字节的事务ID(DB_TRX_ID)
7字节的回滚指针(DB_ROLL_PTR)
隐藏的ID
事务1修改行值过程:
X锁锁定该行 -> 记录redo log -> 把该行修改前的值copy至undo -> 修改当前行的值,填写事务编号,使回滚指针指向undo log中的修改前的行
事务2修改行值过程:
与事务1相同,此时undo log,中有有两行记录,并且通过回滚指针连在一起
二.RC 和 RR 适用MVCC的过程
三.MVCC读类型
1.快照读
读取的是记录的可见版本,或是从undo中读取的历史版本。
普通的查询即为快照读
2.当前读
读取的是记录的最新版本,会与dml语句发生阻塞。
select * from table where ? lock in share mode;
select * from table where ? for update;
转载:
作者: mark_rock
链接:http://www.imooc.com/article/17290?block_id=tuijian_wz
来源:慕课网
一.数据行隐藏列
innodb为每行记录都实现了三个隐藏字段
6字节的事务ID(DB_TRX_ID)
7字节的回滚指针(DB_ROLL_PTR)
隐藏的ID
事务1修改行值过程:
X锁锁定该行 -> 记录redo log -> 把该行修改前的值copy至undo -> 修改当前行的值,填写事务编号,使回滚指针指向undo log中的修改前的行
事务2修改行值过程:
与事务1相同,此时undo log,中有有两行记录,并且通过回滚指针连在一起
二.RC 和 RR 适用MVCC的过程
RC |
事务开始 |
(1).执行SQL语句之前,将系统中非当前活跃事务信息输出到一个副本trx_list |
(2).用户在当前SQL开始读取记录,假设读取到的记录事务ID为trx_id_0 |
(3).找出trx_list 中最早的事务trx_id_1 和 最晚的事务trx_id_2 |
(4).如果trx_id_0 |
(5).如果trx_id_0>trx_id_2 则表示该行记录在本SQL执行之后发生了其他事务,因此该行不可见。转至(7) |
(6).如果trx_id_1<=trx_id_0<=trx_id_2 则表示该行记录在本SQL开启时处于活动状态,因此该行不可见。转至(7) |
(7).从该行记录的DB_ROLL_PTR指针所指向的回滚段中取出最新的undo-log的版本号,将它赋值该trx_id_0,然后跳到步骤(4) |
(8).将该行的数据返回给用户,跳转至(2) |
(9).所有记录遍历完毕,关闭trx_list,跳转至(1),执行下一条SQL |
事务结束 |
RR |
事务开始,将系统中非当前活跃事务信息输出到一个副本trx_list |
(1).执行SQL语句 |
(2).用户在当前本事务开始读取记录,假设读取到的记录事务ID为trx_id_0 |
(3).找出trx_list 中最早的事务trx_id_1 和 最晚的事务trx_id_2 |
(4).如果trx_id_0 |
(5).如果trx_id_0>trx_id_2 则表示该行记录在本事务开启之后发生了其他事务,因此该行不可见。转至(7) |
(6).如果trx_id_1<=trx_id_0<=trx_id_2 则表示该行记录在本事务开启时处于活动状态,因此该行不可见。转至(7) |
(7).从该行记录的DB_ROLL_PTR指针所指向的回滚段中取出最新的undo-log的版本号,将它赋值该trx_id_0,然后跳到步骤(4) |
(8).将该行的数据返回给用户,跳转至(2) |
(9).所有记录遍历完毕,跳转至(1),执行下一条SQL |
事务结束,关闭trx_list |
三.MVCC读类型
1.快照读
读取的是记录的可见版本,或是从undo中读取的历史版本。
普通的查询即为快照读
2.当前读
读取的是记录的最新版本,会与dml语句发生阻塞。
select * from table where ? lock in share mode;
select * from table where ? for update;
转载:
作者: mark_rock
链接:http://www.imooc.com/article/17290?block_id=tuijian_wz
来源:慕课网
事务
指针
版本
用户
指向
数据
语句
过程
信息
副本
字节
快照
步骤
状态
系统
中非
活动
输出
普通
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电信天翼云服务器维修要收费吗
防骗网络安全教育
服务器有连接数量限制吗
泰格商霸无法连接到数据库
软件开发中每个阶段
怀柔区制造软件开发检修
数据库 循环查询
腾讯云服务器怎么样
php数据库添加
虚拟网络安全不安全
正规网络技术开发源头好货
重装系统后数据库恢复
网络安全知识专题讲座知识
本机连接服务器
镇政府网络安全管理细则
好商汇网络技术服务有限公司
网络安全证书报名时间
盐城网络技术开发公司招聘
网络安全面试题及答案
国家网络安全宣传周小剧场
09美国将网络安全问题
中科大网络安全学院申办
服务器网络共享
科技感信息互联网ppt
数据库工程师有编程吗
远程服务器提示异常
软件开发中的pl
数据采集器软件开发
sql数据库加列
联网服务器