Read Committed
Posted furuihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Read Committed相关的知识,希望对你有一定的参考价值。
在Read Committed隔离级别下,一个事务可能会遇到不可重复读(Non Repeatable Read)的问题。
不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致。直线电机哪家好
我们仍然先准备好students
表的数据:
mysql> select * from students;
+----+-------+
| id | name |
+----+-------+
| 1 | Alice |
+----+-------+
1 row in set (0.00 sec)
然后,分别开启两个MySQL客户端连接,按顺序依次执行事务A和事务B:
时刻 | 事务A | 事务B |
---|---|---|
1 | SET TRANSACTION ISOLATION LEVEL READ COMMITTED; | SET TRANSACTION ISOLATION LEVEL READ COMMITTED; |
2 | BEGIN; | BEGIN; |
3 | SELECT * FROM students WHERE id = 1; | |
4 | UPDATE students SET name = ‘Bob‘ WHERE id = 1; | |
5 | COMMIT; | |
6 | SELECT * FROM students WHERE id = 1; | |
7 | COMMIT; |
以上是关于Read Committed的主要内容,如果未能解决你的问题,请参考以下文章
JDBC Transaction 如何在 TRANSACTION_READ_COMMITTED 隔离级别锁定表?
Oracle 数据库中的 READ_COMMITTED 和 SERIALIZABLE 隔离级别有啥区别?
ADO.Net IsolationLevel.Snapshot 与 SET READ_COMMITTED_SNAPSHOT ON
sql server 事务隔离性 snapshot read committed说明
MySQL事务Read Committed隔离级别的数据可见性
带有 nolocks 和 TRANSACTION ISOLATION LEVEL READ COMMITTED 的 SQL 事务