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此时也读不到

313194968

318466015

318511453

318552843

读已提交

两个事务,

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

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

318719828

318761218

可重复读

两个事务,

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

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

319016015

319030281

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

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

238a0686-4d5e-493c-8480-059b63ee6940

串行化

两个事务,

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

bbd35105-df53-491e-be4c-c9393b2a4935

319184640

左边锁了

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

319259703

319308406

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

posted @ 2020-09-13 16:37  元贞  阅读(170)  评论(0编辑  收藏  举报