- 事务
- 事务的四大特性
- 原子性
- 持久性
- 总结
事务
事务的目的就是为了保证数据的最终一致性
事务的四大特性
ACID:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
当前事务的操作要么全部成功,要么全部失败。原子性由undo log日志来保证,因为undo log记载着数据修改前的信息
(比如:我们要insert一条数据,则undo log中会记录一条delete日志。我们要update一条记录,则log中记录之前的旧值的update记录)
### 一致性 通过原子性,隔离性,持久性,来达到事务的一致性,保证事务的一致性需要程序代码来保证
一致性是事务的目的,需要通过程序来达到
### 隔离性 在并发事务执行的情况下,多个事务的内部操作不互相干扰。如果多个事务同时操作一个数据,可能会产生**脏读,不可重复度,幻读**等问题。 所以需要事务之间存在一定的隔离级别。 - read uncommit - read commit - repeatable read - serializable
持久性
表示事务一旦提交,其对数据库的改变应该是永久性的(会将数据持久化到硬盘中)
持久性通过redo log日志来实现,当我们需要修改数据的时候,mysql是先把这条数据所在的页找到,然后把该页加载到内存中,将对应记录进行修改
如果在内存中修改完成后,mysql宕机,通过redo log日志记录在该页中修改的记录
redo log是顺序写的,写入速度很快,并且记录的是物理修改(xxx页做了xx修改),文件的体积很小,恢复速度快
一旦提交事务,数据是永久记录的,mysql底层使用的是redo log来持久化数据
总结



