并发操作带来的数据不一致性有三类:丢失修改、不可重复读和读脏数据。
问题原因:在事务并发过程中,因为多个事务对相同数据的访问,干扰了其他事务处理,产生了数据的不一致性,是因为事务隔离性被破坏。
问题焦点:事务在读写数据时不加控制而相互干扰。
解决方法:保证事务的隔离性。
1 | 丢失修改 | 事务A和B同时修改某数据,后者覆盖了前者修改结果 | 同时售出2张票,系统库存却只减少1张 |
2 | 不可重复读 | 事务A读取某数据后,事务B对数据做了修改,事务A再次读取,两次读取结果不相同 | |
3 | 读脏数据 | 事务B修改某数据后,事务A读取数据,事务B回滚,数据恢复原值,事务A读取了无效数据 |