事务特性:原子性,一致性,隔离性,持久性。
事务想要的效果:可靠性和并发处理
可靠性:数据库在insert update异常或者数据库宕机时保证数据修改操作的前后一致性。需要知道数据修改前和修改后的状态。所以就有了redo log和undo log。
并发处理:当多个请求对数据库进行操作的时候,多个操作之前相互隔离,避免出现读到脏数据。
实现事务的三个技术:日志(redo/undo log),锁技术,mvcc
1.redo log
什么是redol log ?
redo log叫做重做日志,是用来实现事务的持久性,该日志由两部分组成,重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者在内存中,后再是在磁盘当中。
undo log ?
undo log 是用来用于回滚数据,用于保证未提交事务的原子性。
每一条数据的变更(insert/update/delete)操作,都会产生一条undo log,并且回滚日志会优先于数据持久化到磁盘上。
所谓的回滚操作 就是对undo log做逆向操作,比如delete 逆向操作 为insert.
事务的原子性是通过undo log实现的。
事务的持久性是通过redo log实现的。
事务的隔离性是通过(锁+mvcc)实现的。
事务的一致性是通过 原子性 持久性 隔离性 来实现的