事务指一组操作是不可分割的最小单位,组成这组操作的各个单元,要么全部执行成功,要么全部执行失败
设置事务的隔离级别是为了保证多个事务并发执行的结果是可控的,更符合预期的,也就是防止别的事务影响到当前事务的一种策略
事务并发执行可能带来的结果:
丢失更新: 当一个事务修改了某个操作后,另一个事务对此值也进行了修改,那前一个事务读的值就不是它自己修改的值
脏读: 一个事务读到了另一个事务未提交的数据
不可重复读: 一个事务两次查询的结果不同,因为有别的事务在这中间对数据进行了修改
幻读: 一个事务连续读取两次,中间有别的事务执行了插入数据
幻读与不可重复读的区别:
幻读侧重的是
插入操作导致读取的结果集不同,不可重复读侧重的是修改操作导致读取的值不同
解决了脏读MySQL默认的事务隔离级别,保证当前事务多次读取的数据是一致的,解决了脏读和不可重复读解决了所有问题,但是效率低