| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
xdkb2292
8年前发布

mysql事务之可重复读(Repeated Read)

来自: http://www.jinglongjun.club/2016/01/mysql事务之可重复读repeated-read/

1,Repeated Read

在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的DBMS需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁(range-locks)”,因此可能会发生“幻影读(phantom reads)”

在该事务级别下,保证同一个事务从开始到结束获取到的数据一致。这是Mysql的默认事务级别。

设置我们的数据库事务为该级别。

SET  SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;SET  GLOBAL TRANSACTION ISOLATION LEVEL  REPEATABLE READ;

2,场景

开启事务1,在我们数据库中对student表修改,事务不提交。

start TRANSACTION;   select * from student;   update student set name = 'a2' where id = 1;   select * from student;

开启事务2,查询student表数据,事务不提交

start TRANSACTION;select * from student;

提交事务1。

start TRANSACTION;   select * from student;   update student set name = 'a2' where id = 1;   select * from student;   COMMIT;

事务2中继续查询。

查询,发现未获取到事务1的数据。

此事务级别保证了同一个事务获取数据一致。

</div>

 本文由用户 xdkb2292 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1453646098683.html
MySQL 数据库服务器