您当前的位置: 首页 >  数据库
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数据库学习笔记4-隔离级别 Read Committed

软件工程小施同学 发布时间:2021-02-24 23:17:31 ,浏览量:0

1. Read Committed

允许读到其它事务已提交的、修改后的数据

 

2. 不可重复读(Non Repeatable Read)

在Read Committed隔离级别下,一个事务可能会遇到不可重复读(Non Repeatable Read)的问题。

不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致。

 

3. 例子

我们仍然先准备好students表的数据:

mysql> select * from students;
+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
+----+-------+
1 row in set (0.00 sec)

然后,分别开启两个MySQL客户端连接,按顺序依次执行事务A和事务B:

时刻事务A事务B1

// 设置隔离等级

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;2BEGIN;BEGIN;3 

// 读到Alice

SELECT * FROM students WHERE id = 1;

4

// 将Alice修改为Bob

UPDATE students SET name = 'Bob' WHERE id = 1;

 5COMMIT; 6 

// 读到Bob

SELECT * FROM students WHERE id = 1;

7 COMMIT;

 

当事务B第一次执行第3步的查询时,得到的结果是Alice,随后,由于事务A在第4步更新了这条记录并提交,所以,事务B在第6步再次执行同样的查询时,得到的结果就变成了Bob,因此,在Read Committed隔离级别下,事务不可重复读同一条记录,因为很可能读到的结果不一致。

 

 

 

 

https://www.liaoxuefeng.com/wiki/1177760294764384/1245266514539200

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

1.3161s