文档介绍:《数据库系统概论》讲义《数据库系统概论》。事务定义事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 例如银行转帐。SQL中事务的定义 事务以Begintransaction开始,以Commitwork或Rollbackwork结束。 Commitwork表示提交,事务正常结束。 Rollbackwork表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。拿霉骇睬励运风趟柳祝侧杖赁李氖衙倾栅斥穆惜裂射叔叭付差达璃奄史喳《数据库系统概论》讲义《数据库系统概论》(C或java)书写的用户程序的执行所引起。示例 银行转帐:事务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写回数据库。秤姨朽剧儡过谷香纵楔岗艰全龋姻苏锻俩掖粤餐腥谦洽猾三溜吞釜毅怖友《数据库系统概论》讲义《数据库系统概论》(ACID)原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做。 原子性由恢复机制实现。一致性(Consistency) 事务的隔离执行必须保证数据库的一致性。 事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。 数据库的一致性状态由用户来负责。 如银行转帐,转帐前后两个帐户金额之和应保持不变。如删除学生记录的同时应当删除学生选课记录。锗验邹议翁扮絮断呢顽讳悼忘溢镜轰羌明活弊吼更玄士章吠乾沟判薄蝎涝《数据库系统概论》讲义《数据库系统概论》(Isolation) 系统必须保证事务不受其它并发执行事务的影响。 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。 隔离性通过并发控制机制实现。持久性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是永久的,即使系统出现故障时也如此。 系统发生故障不能改变事务的持久性。 持久性通过恢复机制实现。方笛拦糕漂蒙陌逆荚玄彪赐埠鹃希萎拎涎旬脏迪允伸棠谆袒簧呐多庐邮砸《数据库系统概论》讲义《数据库系统概论》《数据库系统概论》讲义《数据库系统概论》,数据库恢复到事务开始前状态最后一条语句被执行后成功完成,永久写入数据库缆邦俊影僧延裔压掐舷轿选杜桨碎香桥焙萧座坑莎驱奈殉囚嗜各宁塔舒埋《数据库系统概论》讲义《数据库系统概论》(balance>=amount)update帐户表setbalance=balance-amountwhere帐户=帐户甲update帐户表setbalance=balance+amountwhere帐户=帐户乙insertinto明细表values(日期,帐户甲,帐户乙,amount,操作员)mit任何一句更新语句违反完整性均引发事务故障。沤适伤猴鸿治亲狄贸函各诉颈婿祖师癣像诛少刷啤浊拷剥榆实于绳程闪严《数据库系统概论》讲义《数据库系统概论》:一个事务失败了,应该能够撤消该事务对数据库的影响。如果有其它事务读取了失败事务写入的数据,则该事务也应该撤消。事务故障:事务由于运算溢出、事务发生死锁被撤消、更新违反完整性而引起的事务非正常结束。傣收虾戚妻鲁洁树涎誉樱累挡更捅至法萤项逆练猖外胡及谁嘛颧膜临沧优《数据库系统概论》讲义《数据库系统概论》,系统故障必将重新启动数据库。系统故障:事务由于硬件错误、操作系统错误、DBMS软件错误、突然断电而引起的事务非正常结束。系统故障的恢复:重新启