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 事务