单机系统-数据库事务
2020-04-04 本文已影响0人
奔向学霸的路上
定义
事务提供一种机制,将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。简单来说,事务提供一种“要么全做,要么什么都不做”
数据库本地事务(ACID)
A:原子性(Atomicity)
一个事务中的所有操作要么全部完成,要么回滚到事务开始前的状态,不存在中间状态
C:一致性(Consistency)
一个事务执行之前与执行之后数据库都处于一致性状态。如果事务成功完成,那么系统所有变化都将正确的应用;如果事务失败,那么系统中所有变化将自动回滚,系统返回原始状态。
I:隔离性(Isolation)
指的是并发环境中,当不同的事务操作相同数据时,每个事务都有各自的完整数据空间。事务查看数据更新时,数据处于状态要么时另一个事务修改前的状态,要么是另一个事务修改后的状态,本事务不能查到别的事务的中间状态
D:持久性(Durability)
指的是事务成功后,它对数据库的更新将永久保存下来,即使系统崩溃,数据库重启,事务还是能恢复到成功结束时的状态
InnoDB实现原理
image.png
InnoDB是通过日志和锁来保证的
事务的隔离性是通过数据库锁机制实现的
持久性通过redo log(重做日志)来实现:redo log是记录新数据的备份。
原子性、一致性通过undo log来实现:在操作任何数据之前,首先将数据备份到undo log,然后进行数据的修改。如果出现错误或者用户执行rollback,系统利用undo log中的备份将数据回复到事务开始之前的状态。