关系数据库维护

DBMS必须提供数据库的恢复、数据库的并发控制、数据库的完整性检查和数据库的安全性保护四个方面的功能。

数据库的恢复功能:计算机系统的硬件故障、软件故障、操作员的失误以及恶意的破坏都会影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失,DBMS必须具有将数据库从错误状态恢复到某一已知的正确状态的功能。

并发控制功能:当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏,DBMS必须具有对多用户的并发操作加以控制和协调的功能。

数据库的完整性:指数据库中数据的正确性、有效性和相容性,DBMS必须具有将数据控制在有效的范围内,或保证数据之间满足一定的关系的功能,这就是数据库的完整性检查功能。

数据库的安全性保护功能:是指保护数据,以防止不合法的使用造成的数据的泄密和破坏,DBMS必须具有使每个用户只能按规定对某些数据以某些方式进行使用和处理的功能。

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;一个应用程序通常包含多个事务。事务是恢复和并发控制的基本单位。

事务的开始与结束可以由用户显式定义。在SQL中,显式定义事务的语句有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK。通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示事务正常结束,提交事务的所有操作,事务中所有对数据库的更新永久生效。ROLLBACK表示事务异常终止,事务运行的过程中发生了故障,不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚事务所有更新操作,事务回滚到开始时的状态。当用户没有显式地定义事务时,DBMS按缺省规定隐式自动划分事务。

事务的ACID特性是指事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

1. 原子性:事务是数据库的逻辑工作单位。事务中包括的诸操作要么都做,要么都不做。

2. 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态,如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。

3. 隔离性:对并发执行而言,一个事务的执行不能被其他事务干扰。一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4. 持续性:持续性也称永久性(Permanence),一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦即一致性状态)的功能,这就是数据库的恢复。

故障类型

数据库系统中可能发生各种各样的故障,大致可以分以下几类:

1. 事务故障

事务故障是指某个事务在运行过程中由于种种原因未能运行至终止点(COMMIT或ROLLBACK),发生故障。

事务故障的常见原因包括输入数据有误、运算溢出、违反了完整性限制、应用程序出错、并行事务发生死锁等。

发生事务故障时,未完成的事务可能把对数据库的部分修改写回磁盘,此时的数据库可能处于不正确的状态,恢复程序要在不影响其它事务运行的情况下,强行回滚(ROLLBACK)该事务,清除该事务对数据库的所有修改,使得这个事务好像根本没有运行过一样。

2. 系统故障

系统故障是指由于操作系统或DBMS代码错误、特定类型的硬件错误(如CPU故障)或突然停电等原因,使得系统要重新启动。发生系统故障时,所有正在运行的事务都非正常终止,内存中数据库缓冲区的信息全部丢失,但外部存储设备上的数据未受影响。

发生系统故障时,一些尚未完成的事务的结果可能已被写入物理数据库,从而造成数据库可能处于不正确的状态。为保证数据一致性,需要清除这些事务对数据库的所有修改。恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销(UNDO)所有未完成的事务。

另一方面,发生系统故障时,有些已完成事务的结果可能有一部分甚至全部留在缓冲区,尚未写入磁盘的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。恢复子系统必须在系统重新启动时需要重做(REDO)所有已提交的事务,以将数据库恢复到一致状态。

3. 介质故障

系统故障称为软故障(Soft Crash),介质故障称为硬故障(Hard Crash)。介质故障是指由于磁盘损坏、磁头碰撞、瞬时强磁场干扰等原因,使得存储在外存中的数据部分丢失或全部丢失。

介质故障比前两类故障的可能性小得多,但破坏性大得多。

关键概念:事务故障和系统故障不会破坏外存中数据库的数据,介质故障会破坏存放在外存的数据库中的部分或全部数据。

总结各类故障,对数据库的影响有两种可能性。一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335