事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元
10.1 事务的基本概念
1.事务
事务是用户定义的一个数据库操作序列,是一个具有原子性的操作,不可再分,一个事务内的操作要么全做、要么都不做。一般来说,一个程序中包含多个事务。
事务通常以BEGIN TRANSACTION 开始,以COMMIT或者ROLLBACK结束。COMMIT表示提交,提交事务的所有操作,将事务中所有对数据库的更新写回到磁盘的物理数据库中。ROLLBACK表示回滚,表示在事务执行过程中出现了故障,系统将事务对数据库已完成的操作全部撤销,回滚到事务开始时的状态。
2.事务的ACID特性
Atomicity:原子性
事务是数据库逻辑工作的原子单位,事务中的操作要么全做,要么不做
Consistency:一致性
事务执行的结果必须是使得数据库从一个一致性状态变到另一个一致性状态,也就是说一个事务执行前和执行后都需要处于一致性状态。事务的执行必须是一气呵成的。可见一致性和原子性密切相关。比如A向B转账1万块,那么作为转账事务,要么A减少1万,B增加1万;要么转账失败,两边都不变。不存在A不变但B多1万,或者A少1万B不变的情况
Isolation:隔离性
一个事务的执行不能被其他事务所干扰,就是一个事务的内部操作及其使用的数据对其他并发事务时隔离的。
Durability:持续性
一个事务一旦提交,对数据库中数据的改变应该是永久性的
事务ACID特性可能遭到破坏的因素有:
- 多个事务并行运行,不同事务的操作交叉执行
- 事务在运行过程中被强制停止