事务定义
- 事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)
事务的隔离级别
读未提交:存在脏读,不可重复读,幻读
读已提交:解决脏读
可重复读:解决脏读与不可重复读
串行:强制事务排序,使之不可能相互冲突,解决所有问题
- 脏读:一个事务A对数据进行修改还未提交,这时另一个事务B进行读取,读到了还未提交的数据。如果事务A再提交前又进行修改,就会导致B所读数据不正确。
- 不可重复读:一个事务范围内两个相同的查询却返回了不同数据。可能是在查询中另一个事务对数据进行了修改。
- 幻读:一个事务(同一个read view)在前后两次查询同一范围的时候,后一次查询看到了前一次查询没有看到的行。
事务的特性
- 原子性:事务是应用中不可再分的最小逻辑执行体。
- 隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发事务都是隔离的。
- 一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。
- 永久性:指一个事务一旦被提交,它对数据库所做的改变都要记录到永久存储中。