1.事务的并发控制可能产生哪些问题
不同事务之间可能会互相影响,比如一个事务修改另一个事务也改了,但是另一个事务的修改把这个事务的修改给覆盖掉了,这就是所说的事务并发控制问题。
如果不对事务进行并发控制,可能会产生四种异常情况
幻读(phantom read):一个事务第二次查询出现第一次没有的结果,说明别的事务已经插入一些数据。注意这是在同一个事务里面的查询
非重复读(nonrepeatable read):一个事务重复读两次得到不同结果,说明读取操作结果是不可重复的。
脏读(dirty read):一个事务读取到另一个事务没有提交的修改,就是当另一个事务它会没有提交修改一个事务就读取到了修改。
丢失修改(lost update):并发写入造成其中一些修改丢失。
2.四种事务隔离级别
为了解决并发控制可能产生的异常问题,数据库定义了四种事务的隔离级别
读未提交(read uncommitted):别的事务可以读取到未提交改变
读已提交(read committed):只能读取已经提交的数据
可重复度(repeatable read):同一个事务先后查询结果一样,Mysql InnoDB默认实现可重复读级别。
串行化(Serializable):事务完全串行化的执行,隔离级别最高,执行效率最低。相当于把数据库在一个事务执行的时候完全锁住,等它执行完才能执行下一个。
来源:https://blog.csdn.net/qq_37189082/article/details/98757698