码迷,mamicode.com
首页 > 其他好文 > 详细

第十三章:UNDO段

时间:2019-01-17 01:17:43      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:怎么办   回滚   操作   怎么   图片   ima   back   管理系   记录   



一、UNDO

         UNDO 段是用于存储还原数据的特殊段,在发生实例故障的时候,UNDO 段用来对数 据进行恢复。本章内容包括介绍 UNDO 段的工作原理,并进行自动和手工的 UNDO 段的管理



1.1 UNDO 段的作用

      RDBMS(关系数据库管理系统)必须要提供一致性的数据,以确保不会丢失数据或导致数据混乱。例如,当用户去银行取款时,需要在用户储蓄账户上减去取款额,而在银行支出账户上增加取款额,以使得收支平衡。当使用关系数据库处理以上过程时,储蓄账户、支出账户分别对应于数据库表。当用户提款时,分别会在储户表、支出账户表上使用 UPDATE 语句执行增减款操作,最终提交事务,以确保收支平衡。

        大家设想一下,假设当在储蓄账户上减去取款额之后,因为机器断电导致数据库停止工作,怎么办?你可能会想这会导致收支不平衡,不会的,关系数据库通过事务(Transaction)实现了数据一致性。因为断电时事务尚未完成,所以将来在启动数据库时系统会自动回退未提交操作,并最终保证数据的一致性。从数据库的角度看,如果储蓄账户执行了 UPDATE 操作后出现断电,那么当重新启动数据库时系统会自动执行还原操作,将修改的数据恢复成原有数据。此时大家可能会问,那么原有数据存放在哪儿呢?当执行 INSERT、UPDATAE、 DELETE 等 DML 操作时,服务器进程会将原有数据(称为 UNDO 数据)存放到 UNDO 段中,UNDO 段是专门用于存储还原数据的段。

技术分享图片

         UNDO 数据也被称为回滚(ROLLBACK)数据,它用于确保数据的一致性。当执行 DML 操作(INSERT、UPDATE、DELETE 等)时,操作前的数据被称为 UNDO 记录。例如,当执行“UPDATE emp SETsal=1000WHERE empno=7788”语句时,假定雇员 7788 原有工资为 800,原有数据 800 就是 UNDO 数据,并且该数据会被存放到还原段中,而新数据 1000 则会存放到 EMP 数据段中。还原段用于在进程更改数据库中的数据时保存数据的旧值(可能还原的数据)。它按数据被修改之前的原样存储数据的位置及数据本身(如图 9-1 所示)。许多并发事务处理可以写入一个 UNDO 段。





























==============================================================

第十三章:UNDO段

标签:怎么办   回滚   操作   怎么   图片   ima   back   管理系   记录   

原文地址:https://www.cnblogs.com/ios9/p/10280196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!