MySQL之事务
事务ACID
1.原子性(Atomicity)
事务视为最小单元,事务要么成功全部提交,要么失败进行回滚,回滚可以通过undo log日志来实现数据的回滚。
2.一致性(Consistency)
在执行事务前后,数据库内数据保持一致,各事务对统一数据读取结果都是相同的。
3.隔离性(Isolation)
修改在最终提交之前,事务之间不可见
4.持久性(Durability)
事务提交后,数据将永久保存到硬盘中,即使数据库崩溃,也可以通过redo log日志来实现数据恢复,实现持久化。
并发一致性问题
1.丢失修改
丢失修改指一个事务的更新操作被另外一个事务的更新操作替换。
2.读脏数据
当前事务读到其他事务未提交的数据。
3.不可重复读
事务读取同一数据值第一次和第二次不同,读取之间间被其他事务修改。
4.幻影读
本质是不可重复读,读取数据范围的数量不同。
隔离级别
1.未提交读(READ UNCOMMITTED)
事务中的修改,没提交,其他事务也是可见。
2.提交读(READ COMMITTED)
事务只能读取已提交的修改。修改在提交之前对其他事务不可见。
3.可重复读(REPEATABLE READ)
保证了同一事务在读取同一数据时数据一致。
4.可串行化(SERIALIZABLE)
强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。需要锁。