1、为什么需要事务机制
避免写入直接操作数据文件,写入直接操作数据文件是一件非常危险的事情,遇到突发事故,没有数据文件对比无法还原。mysql五种日志文件,其中只有undo和redo日志与事务有关。拷贝数据记录在
redo日志里面,记录修改记录在undo日志里面。
2、事务机制
事务是一组sql语句当做一个整体要么全部成功要么全部失败。
3、利用日志实现间接写入
先从数据库文件拷贝数据到undo日志,记录修改到redo日志,如果没有问题就同步数据到数据库文件。
开启事务,UPDATE语句,DELETE语句 提交事务。日志操作流程如下,拷贝数据到UNdo日志,update,delete后写入redo日志,undo日志可以用来恢复数据库,redo日志用来修改数据库。
4、事务ACID特性
原子性要么都成功要么都失败不允许停留在某个状态。事务一致性,innodb允许并发执行事务,不管任何给定时间,并发事务有多少,事务必须保证运行结果一致性。隔离性要求事务不受其他事务的影响,
默认情况下A事务,只能看到日志中该事务的数据。持久性,事务一旦提交,结果便是永久性的。即便是宕机了,依然可以依靠事务日志完成数据的持久化。