2.4.4 案例理解4种事务的隔离级别

2.4.4 通过案例理解4种事务的隔离级别

MySQL数据库管理·实战案例7

需求

1 分析当前数据库的事务隔离级别

2 对四种事务隔离级别进行切换,并对比其效果,最终使用哪种隔离级别。

# 设置隔离级别
mysql root@localhost:(none)> set session tx_isolation='READ-UNCOMMITTED';
Query OK, 0 rows affected
Time: 0.001s
# 查看隔离级别
mysql root@localhost:(none)> select @@tx_isolation;
+------------------+
| @@tx_isolation   |
+------------------+
| READ-UNCOMMITTED |
+------------------+

读未提交 Read uncommited

两个事务

A事务进行写入,未提交

B事务,此时就可以读到A写入的数据(脏数据)

当A进行回滚操作后,B此时也读不到

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

读已提交

两个事务,

只有当B事务写入,并提交后,

A事务才能读到B插入的新数据

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

可重复读

两个事务,

B事务进行了写入,并提交,A事务此时仍旧是读到之前的数据,

只有A事务也提交或退出后,才可以读到B插入的新数据。

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

在左边的事务里面永远都只能看到一条数据

在左边提交本次会话后才可以,看到右边新增的数据。

2.4.4 案例理解4种事务的隔离级别

串行化

两个事务,

互相隔离,可以并发读,但是不能读写。

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

左边锁了

串行话,会产生锁。写没有完成,不能读

2.4.4 案例理解4种事务的隔离级别

2.4.4 案例理解4种事务的隔离级别

两个事务可以并发读,但是不能并发读写