没有合适的资源?快使用搜索试试~ 我知道了~
数据库进阶 题⽬01-ReadView案例 • 案例描述 数据库中创建如下数据表,并默认插⼊第⼀条数据 1 CREATE TABLE t ( 2 id INT PRIMARY KEY, 3 c VARCHAR(100) 4 ) Engine=InnoDB; 5 6 INSERT INTO t VALUES(1,'刘备'); 以下图所示逻辑顺序,对⽐RC隔离级别与RR隔离级别下,T6、T8、T10阶段查询结果 RC隔离级别最核⼼的地⽅在于,在事务内的每次SELECT语句执⾏时,都会⽣成对应的 ReadView。抽象地理解就是RC隔离级别下,每⼀个事务只能看得到别的事务已经提交了的数据 内容,事务中间过程数据是⽆法被查看到的。 事务03第⼀次执⾏SELECT操作时,⽣成ReadView。此时ReadView中记录事务01是在进⾏中 的,因此事务01中所更新出来的数据"关⽻"、"张⻜"均⽆法被查询到。因此返回"刘备",事务01 未被提交,因此RC隔离级别下⽆法看到事务01中的"关⽻"、"张⻜"。
资源推荐
资源详情
资源评论
数据
库
进
阶
题
⽬
01-
R
ead
V
ie
w
案
例
案
例
描
述
•
数据
库
中
创
建
如
下
数据
表
,
并
默
认
插
⼊
第
⼀
条
数据
CREATE TABLE t (
id INT PRIMARY KEY,
c VARCHAR(100)
) Engine=InnoDB;
INSERT INTO t VALUES(1,'
刘
备
');
1
2
3
4
5
6
以
下
图
所
示
逻辑
顺
序
,
对
⽐
RC
隔
离
级
别
与
RR
隔
离
级
别
下,
T
6
、
T
8
、
T
10
阶
段
查
询
结
果
。
案
例
01-
读
已
提
交
RC
隔
离
级
别
下
的
可
⻅
性
分
析
•
1.
⽬
标
:
按
流
程
更
新数据
,
并
⽐
较
在
RC
隔
离
级
别
下,
T
6
、
T
8
、
T
10
阶
段
查
询
结
果
。
2.
操
作
步
骤
:
按
图
中
时
间顺
序
,
顺
序
执
⾏
事
务
语
句
。
执
⾏
SQL
语
句
如
下
事
务
01
#
事
务
01
--
查
询
事
务
隔
离
级
别
:
select @@tx_isolation;
--
设
置
数据
库
的
隔
离
级
别
set session transaction isolation level read committed;
SELECT * FROM tab_user; #
默
认
是
刘
备
# Transaction 100
BEGIN;
UPDATE tab_user SET name = '
关
⽻
' WHERE id = 1;
UPDATE tab_user SET name = '
张
⻜
' WHERE id = 1;
COMMIT;
1
2
3
4
5
6
7
8
9
10
11
事
务
02
#
事
务
02
--
查
询
事
务
隔
离
级
别
:
select @@tx_isolation;
--
设
置
数据
库
的
隔
离
级
别
set session transaction isolation level read committed;
# Transaction 200
BEGIN;
UPDATE tab_user SET name = '
赵
云
' WHERE id = 1;
UPDATE tab_user SET name = '
诸
葛
亮
' WHERE id = 1;
COMMIT;
1
2
3
4
5
6
7
8
9
10
事
务
03
#
事
务
03
--
查
询
事
务
隔
离
级
别
:
select @@tx_isolation;
--
设
置
数据
库
的
隔
离
级
别
set session transaction isolation level read committed;
1
2
3
4
5
BEGIN;
# SELECT01:Transaction 100
、
200
未
提
交
SELECT * FROM tab_user WHERE id = 1; #
得
到
的
列
c
的
值
为
'
刘
备
'
# SELECT02:Transaction 100
提
交
,
Transaction 200
未
提
交
SELECT * FROM tab_user WHERE id = 1; #
得
到
的
列
c
的
值
为
'
张
⻜
'
# SELECT03:Transaction 100
、
200
提
交
SELECT * FROM tab_user WHERE id = 1; #
得
到
的
列
c
的
值
为
'
诸
葛
亮
'
COMMIT;
6
7
8
9
10
11
12
13
3.
实
践
过
程
第
⼀
步
、
开
启
三个
数据
库
连
接
,
分别
将
其
数据
库
的
隔
离
级
别
设
置
为
RC
级
别
第
⼆
部
、
三个
数据
库
连
接
分别
运
⾏
'
BEGIN
;'
,
开
启
事
务
第
三
步
、
事
务
01
运
⾏
U
PDATE
语
句
,
按
顺
序
将
n
a
m
e
字
段
更
新
为
关
⽻
和
张
⻜
。
第
四
步
、
事
务
02
运
⾏
U
PDATE
语
句
,
按
顺
序
将
n
a
m
e
字
段
更
新
为
赵
云
和
诸
葛
亮
。
这
⾥
更
新
会
有
阻
塞
,
我
理
解
是
由
于事
务
01
对
数据
进
⾏
了
改
动
,
因
此
上
了
锁
,
所
以会
有
阻
塞
。
第
五
步
、
事
务
01
执
⾏
第
⼀
次
SELECT
操
作
,
得
出
结
果
为
刘
备
。
第
六
步
、
事
务
01
提
交
。
第
七
步
、
事
务
01
执
⾏
第
⼆
次
SELECT
操
作
,
得
出
结
果
为
张
⻜
。
第
⼋
步
、
事
务
02
提
交
。
第
九
步
、
事
务
01
执
⾏
第
三
次
SELECT
操
作
,
得
出
结
果
为
诸
葛
亮
。
4.
结
论
RC
隔
离
级
别
最核
⼼
的
地
⽅
在
于
,
在
事
务内
的
每次
SELECT
语
句
执
⾏
时
,
都
会
⽣
成
对
应
的
R
ead
V
ie
w
。
抽
象
地
理
解
就
是
RC
隔
离
级
别
下,
每
⼀个
事
务
只
能
看
得
到别
的
事
务
已
经
提
交了
的
数据
内
容
,
事
务
中
间
过
程
数据
是
⽆
法
被
查
看
到
的
。
事
务
03
第
⼀
次
执
⾏
SELECT
操
作
时
,
⽣
成
R
ead
V
ie
w
。
此
时
R
ead
V
ie
w
中
记
录
事
务
01
是
在
进
⾏
中
的
,
因
此
事
务
01
中
所
更
新
出
来
的
数据
"
关
⽻
"
、
"
张
⻜
"
均
⽆
法
被
查
询
到
。
因
此
返
回
"
刘
备
"
,
事
务
01
未
被
提
交
,
因
此
RC
隔
离
级
别
下
⽆
法
看
到
事
务
01
中
的
"
关
⽻
"
、
"
张
⻜
"
。
剩余12页未读,继续阅读
资源评论
Mrrunsen
- 粉丝: 8308
- 资源: 473
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功