原子性(Atomicity)
当前事务的操作要么同时成功,要么同时失败。原子性由 undo log日志来实现。
一致性(Consistent)
使用事务的最终目的,由其它3个特性以及业务代码正确逻 辑来实现。
隔离性(Isolation)
在事务并发执行时,他们内部的操作不能互相干扰。隔离性由 MySQL的各种锁以及MVCC机制来实现。
<ul><li>持久性(Durable)</li></ul>
一旦提交了事务,它对数据库的改变就应该是永久性的。持久性由redo log日志来实现。
持久性由redo log 日志来保证,当我们要修改数据时,MySQL是先把这条记录所在的「页」找到,然后把该页加载到内存中,将对应记录进行修改
为了防止内存修改完了,MySQL就挂掉了(如果内存改完,直接挂掉,那这次的修改相当于就丢失了)
MySQL引入了redo log,Buffer Pool内存写完了,然后会写一份redo log,这份redo log记载着这次在某个页上做了什么修改
即便MySQL在中途挂了,可以根据redo log来对数据进行恢复
redo log 是顺序写的,写入速度很快。并且它记录的是物理修改(xxxx页做了xxx修改),文件的体积很小,恢复速度也很快