数据库的事务有四大特性:原子性、隔离性、一致性、持久型,以下为具体实现方式..
【原子性】
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
原子性的实现需要用到undo日志了。重做,主要记录了事务的行为,可以很好地通过对其页进行重做,如果数据库事务发生了回滚,需要用undo日志将数据库回滚到修改之前的样子。
Undo日志通过存储数据库修改的逻辑日志来恢复数据库,比如在进行回滚的时候,对于insert,innodb会进行delete操作,对于delete会进行inert,对于update会执行一个相反的update将之前的数据放回去
Undo的另一个作用是MVCC,MVCC的实现是通过undo来完成的,当用户读取一条记录的时候,若该记录已经被其他的事务占用,当前事务可以通过undo读取到之前的行版本信息,通过此来实现非锁定读取
【隔离性】
隔离性是当多个用户并发访问数据库的时候,比如操作同一张表时,数据库会为每一个用户开启的