数据库事务的特点:ACID 原子性 一致性 隔离性 持久性
不考虑隔离 会引发的问题:
脏读 :真正的问题 事务可通过回滚将数据库回滚到开启前的状态
不可重复读:强调的是一种由于update引起的问题,操作是安全的,事务已提交,可能引起一些莫名的感觉。比如A在事务中突然发现账户多出由B update造成的
金额增加。
虚读:强调的是一种由于insert方法引发的问题,操作也是安全的,事务也已提交,同样会人一种莫名的赶脚。比如A在事务中突然发现账户多出由B insert造成的金额增加。
事务有四种隔离级别:
1、read uncommited 最低事务级别,允许以上三类隔离问题的发生
2、read committed 不会发生脏读,允许不可重复读和虚读发生
3、repeatable read 不会发生脏读、不可重复读,允许虚读发生
4、serializable 事务最高级别,所有相同数据事务操作,都会串行进行,不存在并发,不存在三类隔离问题