Mysql事务特性及原理
持久性: 在事务提交后,先把数据写到redo log日志文件中,再向库中去持久化,一旦期间断电宕机,那么服务恢复后,会将redo log文件中的数据再次写入到库中.
原子性:当执行insert操作时,在undo log日志文件中存储一个相反的delete操作,当事务回滚撤消时,执行相反的操作.
隔离性:
MVCC(多版本并发控制 Multi-Version Concurrent Control)
实现不同的事务在写-读,读写操作时,可以同时进行,提高并发访问能力
每次事务在对数据操作 后,都会在表中的隐式字段中记录当前操作者的id,和上一个记录的回滚指针,从而形成一个版本链.
读视图(readView),从版本链上进行的一个快照.
读 已提交: 称为当前读, 每次读取时,都会获取一个最新的快照, 即使是在同一个事务中的两次读取.都是读到最新内容.
可重复 读:称为快照读,在同一个事务中,第一次查询时,生成一个版本快照(readview),下一次再读取时,还是从快照中读,这样就保证可重复读.
一致性: 由其他三个特性来保障