Advertisement

MySQL数据库(RR/RC隔离级别RC锁测试)

阅读量:

1 表结构

表数据

在表t4 中, 字段d并没有索引

测试案例一:在可重复读隔离级别下进行的数据库操作中,请说明当使用非索引字段进行数据查询时所锁定的对象是单行数据还是全部表数据?

可重复读 隔离级别

sessionA sessionB
begin; select * from t4 where d = 5 for update;
update t4 set d = 5 where id = 0; blocked
commit;
finish

测试步骤

1. 开启sessionA 事物

2 在sessionA中加锁查询数据

3 在 sessionB 中进行数据更新操作 观察到 sessionB 被阻塞 由于写锁之间存在互斥现象

4 在sessionA中提交事物

可以看到sessionA事物提交之后 sessionB事物才完成

由图中看到在 Repeatable Read 隔离级别下

当在一个表中按照非索引字段查询数据的时候, MySQL会锁住整个表,

也就是 why update sessionB's id to 0? What causes it to block?

测试一:在提交隔离级别下采用非索引字段进行数据查找时所锁定的数据类型是单行数据还是全部表中的数据

读提交 隔离级别

|session

全部评论 (0)

还没有任何评论哟~