事务管理
事务是什么?
一组操作, 要么全部执行, 要么全部失败, 把非原子操作封装为原子操作的概念
还是老生长谈的原子性问题
事务的特性
ACID
原子性: 事务是最小的执行单位, 不允许分割. 事务的原子性确保动作要么全部完成, 要么不起作用
隔离性: 一个用户的事务不能被其他用户干扰, 并发事务之间的数据库独立
持久性: 事务提交后, 数据库改变时持久的, 即使发生故障也不能有任何影响
最终目的: 一致性: 事务前的数据一致, 事务后的数据一致
原子性,隔离性和持久性是数据库的属性,而一致性(在 ACID 意义上)是应用程序的属性
MySQL如何保证事务的原子性的?
所有事务操作都会记录到回滚操作日志, 一旦异常发生就会根据日志进行数据回滚 回滚日志的优先级高于数据持久化, 也就是说数据库宕机导致数据没能完整写到磁盘上, 再次开机可以根据回滚日志回滚未完成的事务