千锋教育2023新版javaweb速成全套教程,零基础入门到企业项目实战

p54 1.52
MySQL事务
MySQL事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。
事务隔离级别(隔离性):
1.读未提交(READ UNCOMMITTED)
可能会导致脏读
脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。
2.读已提交(READ COMMITTED)
避免了脏读,但是可能会导致读不可重复读(虚读)
不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响
3.可重复读(REPEATABLE READ)MySQL默认
避免了不可重复读,会导致幻读
幻读是针对数据插入(INSERT)操作来说的。假设事务A对某些行的内容作了更改,但是还未提交,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,会发现好像刚刚的更改对于某些数据未起作用,
4.串行化(SERIALIZABLE)
同时只允许一个事务对数据表进行操作,避免脏读,幻读,虚读
设置数据库的事务隔离级别
查询当前的隔离级别
8.03之前
select @@tx_isolation
8.03之后
select @@transaction_isolation
设置隔离级别
set session transaction isolation level
read committed