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此时也读不到
读已提交
两个事务,
只有当B事务写入,并提交后,
A事务才能读到B插入的新数据
可重复读
两个事务,
B事务进行了写入,并提交,A事务此时仍旧是读到之前的数据,
只有A事务也提交或退出后,才可以读到B插入的新数据。
在左边的事务里面永远都只能看到一条数据
在左边提交本次会话后才可以,看到右边新增的数据。
串行化
两个事务,
互相隔离,可以并发读,但是不能读写。
左边锁了
串行话,会产生锁。写没有完成,不能读
两个事务可以并发读,但是不能并发读写