第六讲事务和锁6.1事务6.1.1事务定义(1)事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位
例:如银行转帐
6.1.2SQL中事务的定义事务以Begintransaction开始,以Commitwork或Rollbackwork结束
Commitwork表示提交,事务正常结束
Rollbackwork表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态
6.1.3事务概念例:银行转帐:事务T从A帐户过户50¥到B帐户
T:read(A);A:=A–50;write(A);read(B);B:=B+50;write(B);read(X):从数据库传送数据项X到事务的工作区中
write(X):从事务的工作区中将数据项X写回数据库
6.1.4事务特性(ACID)(1)原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做
原子性由恢复机制实现
(2)一致性(Consistency)事务的隔离执行必须保证数据库的一致性
事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态
数据库的一致性状态由用户来负责
如银行转帐,转帐前后两个帐户金额之和应保持不变
(3)隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响
对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行
隔离性通过并发控制机制实现
(4)持久性(Durability)一个事务一旦提交之后,它对数据库的影响必须是永久的
系统发生故障不能改变事务的持久性
持久性通过恢复机制实现
活动状态失败状态部分提交状态提交状态中止状态初始状态事务无法继续正常执行事务回滚,数据库恢复到事务开始前状态最后一条语句被执行后成功完成,永久写入数据库事务是恢复和并发控制的基本单位