这里写自定义目录标题
什么是事务
简单的讲,事务是指逻辑上的一组操作,这组操作要么全部发生,要么全部失败。
事务的特性
事务有4大特性(原子性、一致性、隔离性、持久性),4种隔离级别(读取未提交内容、读取提交内容、可重读、可串行化),7中传播行为(PROPAGATION_REQUIRED 、PROPAGATION_REQUIRED_NEW、PROPAGATION_NESTED、PROPAGATION_SUPPORTS、PROPAGATION_NOT_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_NEVER)//todo 详细补充下传播行为,分析下15号遇到的场景
事务隔离级别相关问题
脏读
脏读指事务A读到了事务B还没有提交的数据。 A事务对一条记录进行修改,尚未提交,B事务已经看到了A的修改结果。若A发生回滚,B读到的数据就是错误的,这就是脏读。
不可重复读
在一个事务里面读取了两次某个数据,读出来的数据不一致。A事务对一条记录进行修改,尚未提交,B事务第一次查询该记录,看到的是修改之后的结果,此时A发生回滚,B事务又一次查询该记录,看到的是回滚后的结果。同一个事务内,B两次查询结果不一致,这就是不可重复读。
幻读
所谓幻读,就是指在一个事务里面的操作中发现了未被操作的数据。比如学生信息,事务A开启事务–>修改所有学生当天签到状况为false,此时切换到事务B,事务B开启事务–>事务B插入了一条学生数据,此时切换回事务A,事务A提交的时候发现了一条自己没有修改过的数据,这就是幻读,就好像发生了幻觉一样。幻读出现的前提是并发的事务中有事务发生了插入、删除操作