一. 事务的定义
事务是访问并可能更新各种数据项的一个操作集合。该集合是一个不可分割的整体,即集合中的操作要么全部执行成功要么全部未成功,不存在部分执行成功部分执行失败的最终结果。
二. 事务的性质
1. 原子性:事务中的多个操作要么全部执行成功,要么全部未成功(与全部未执行一样)。
2. 一致性:事务执行前与执行后数据库保持一致性。即事务涉及到的所有数据项的总量在事务执行之前和事务执行后保持一致。
3. 隔离性:多个事务并发的执行,每个事务不会感知到其他事务的存在。即多个事务在执行的时候不会相互影响。
4. 持久性:即事务成功之后,事务对数据库的改变必须是永久性的。
三. 单个事务执行过程的各个状态
1. 活动状态:开启事务,事务正在执行。
2. 部分提交状态:最后一条操作语句执行完成后,commit之前。
3. 失败状态:正常执行中遇到错误,执行不能继续。
4. 中止状态:事务被回滚且数据库已经恢复到事务执行前的状态。
5. 提交状态:事务执行完成且成功commit。
四. 事务的调度
1. 可恢复调度:对于一对事务T1和T2,如果T2读取T1所写的数据,则T1要先于T2提交。
2. 无级联调度:对于一对事务T1和T2,如果T2读取T1所写的数据,则T1必须在T2读操作前提交。
五. 事务的隔离级别
1. 可串行化:串行化调度。
2. 可重复读:指允许读取已提交数据,且在一个事务两次读取同一个数据项期间,其他事务不得更新该数据。
3. 已提交读:只允许读取已提交数据,不要求重复读。
4. 未提交读:允许读取未提交数据。