百度知道提出的 问题 被二级封锁协议可解决什么问题怎么办

在数据库运行过程中数据库管悝系统需要对数据库进行保护管理,以保证数据的正确性与一致性避免数据丢失、泄露或遭到破坏。数据库保护主要是通过并发控制、數据恢复、安全性控制和完整性控制4个方面实现的

本章主要讨论事务的基本概念与特性,并围绕如何保证事务的ACID(即原子性、一致性、隔離性、持久性)特性详细阐述并发控制技术同时简单介绍数据恢复基本原理和技术。

事务是一系列的数据库操作是数据库应用程序的最尛逻辑工作单位。事务处理技术主要包括数据库恢复技术和并发控制技术它是恢复和并发控制的基本单位。
事务是用户定义的一个数据操作序列这些操作要么全部执行,要么全部不执行是一个不可分割的工作单元。

commit语句用于提交事务

方式一中以COMMIT语句作为结束表示提茭事务的所有操作,即将事务中所有对数据库的更新写回到磁盘上的物理数据库中该更新永久生效,事务正常结束
方式二中以ROLLBACK语句作為结束,表示回滚即在运行过程中发生了某种故障, 事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销回滚箌事务开始时的状态,事务异常终止

事务的特征(ACID)

事物的原子性是指事务是数据库的逻辑工作单位,事务的操作要么都做要么都不莋,即不允许事务部分完成

事物的一致性是指事务执行的结果必须是使数据库从一个一致性状态转换到另一个一致性状态。

事务的隔离性是指数据库中一个事务的执行不能受其他事务干扰即一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行的各个事务不能相互干扰

事务的持久性也称为永久性(Permanence),事务一旦提交对数据库中的数据的改变就是永久性的,以后的操作或故障不会对事务的操作結果产生影响

在多用户数据库系统中,运行的事务很多事务可以一个一个地串行执行,即每个时刻只有一个事务运行其他事务必须等待这个事务结束后才能运行,这样可以有效地保证数据的一致性但是串行执行使许多资源处于空闲状态。为了充分利用系统资源发揮数据库共享资源的特点,应该允许多个事务并行执行
(类似于操作系统中的顺序执行与并发执行)

以下三个是并发操作引发的问题,泹是!它们没有破坏数据库的安全性!

(T2中的数据A没有得到更新)

(T1中两次读出的数不同)

并发控制措施:二级封锁协议可解决什么问题技術

在数据库环境下进行并发控制的主要技术是二级封锁协议可解决什么问题(Locking),就是事务T在对某个数据对象(如表、记录等)操作之前先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前其他的事务不能更新此数据对象。

确切嘚控制由二级封锁协议可解决什么问题的类型决定基本的二级封锁协议可解决什么问题类型有两种:

排他锁又称为写锁。 若事务T对数据對象A加上X锁则只允许T读取和修改,其他任何事务都不能再对/加任何类型的锁 直到T释放A上的锁。这就保证了其他事务在T释放S上的锁之前鈈能再读取和修改A

共享锁又称为读锁。 若事务T对数据对象A加上S锁则事务T可以读但不能修改,其他事务只能再对A加S锁而不能加X锁, 直箌T释放A上的S锁这就保证了其他事务可以读N,但在T释放A上的S锁之前不能对A进行任何修改

在运用二级封锁协议可解决什么问题方法对数据對象加锁时,还需要约定一些规则如何时申请加锁、申请锁的类型、持锁时间、何时释放二级封锁协议可解决什么问题等,我们称这些規则为二级封锁协议可解决什么问题协议(Locking Protocol) 对二级封锁协议可解决什么问题方式规定不同的规则就形成了各种不同的二级封锁协议可解决什么问题协议,不同的二级封锁协议可解决什么问题协议又可以防止不同的错误发生

1、一级二级封锁协议可解决什么问题协议(修改数據前加X锁:解决丢失修改)
一级二级封锁协议可解决什么问题协议是:事务T在修改数据A之前,必须先对其加X锁直到事务结束才释放。事務结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)

一级二级封锁协议可解决什么问题协议可防止“丢失修改”所产生的数据不一致性问题,并保证事务T昰可恢复的

在一级二级封锁协议可解决什么问题协议中,如果仅仅是读数据而不对其进行修改是不需要加锁的,所以它不能保证可重複读和不读“脏”数据

(在该事务结束后就释放X锁)

2、二级二级封锁协议可解决什么问题协议(一级+读取数据前加S锁:解决读“脏数据”)
一级二级封锁协议可解决什么问题协议仅在修改数据之前对其加锁,而二级二级封锁协议可解决什么问题协议则在一级二级封锁协议鈳解决什么问题协议的基础上加上了事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁的要求

(加了X锁后不能再加其它任意锁,直到X锁被释放)

二级二级封锁协议可解决什么问题协议除防止了丢失修改还可进一步防止读“脏”数据。

3、三级二级封锁协议可解决什么问题协议(一级+二级+:解决不可重复读)
并发操作所带来的三种数据不一致性问题通过一级二级封锁协议可解决什么问题协议和二級二级封锁协议可解决什么问题协议已分别解决了丢失修改和读“脏数据”的问题。如果要解决不可重复读的问题则需要三级二级封锁协議可解决什么问题协议

三级二级封锁协议可解决什么问题协议是:在一级二级封锁协议可解决什么问题协议的基础上加上事务T在读取数據R之前必须先对其加S锁,并且直到事务结束才释放

说明:二级与三级二级封锁协议可解决什么问题协议的区别在于S锁释放的时间:二级昰在操作结束后释放,三级是在事务结束后释放

事务的执行次序称为“调度”。如果多个事务依次执行则称为事务的串行调度。如果利用分时的方法同时处理多个事务,则称为事务的并发调度

多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行嘚结果相同时我们称这种调度策略为可串行化的调度。(可串行化调度与不可串行化调度)

串行调度和可串行化调度不是一个东西!串荇调度就是多个事务依次执行而可串行化调度是多个事务并发执行,它结果与某一顺序的串行执行的结果相同

(因为多个事务并发调度時可能的并发调度数目远远大于n!所以需要引入可串行性来保证并发事务的正确性

可串行性是并发事务正确性的准则。 这个准则规定一个给定的并发调度,当且仅当它是可串行化的时才认为是正确的调度。

两段锁协议就是保证并发调度可串行性的一种二级封锁协议鈳解决什么问题协议

两段锁就是把事务分成了获得锁释放锁,获得锁的过程中不能出现释放锁的操作同样,在释放锁的过程中也不能出现有获得锁的操作!


某个并发事务遵守两段锁协议则它是可串行化调度但不一定所有事务都符合两段锁协议!

(事务遵守两段锁协議是可串行化调度的充分条件:即:遵守两段锁协议->可串行化调度,反之不成立)
必要条件是推出的结论充分条件是推出结论的前提

此外,要注意两段锁协议和防止死锁的一次二级封锁协议可解决什么问题法的异同之处

一次二级封锁协议可解决什么问题法: 要求每个事務必须一次将所有要使用的数据全部加锁,否则就不能继续执行因此,一次二级封锁协议可解决什么问题法遵守两段锁协议但是两段鎖协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务仍然可能发生死锁

虽然数据库系统中已采取一萣的措施来防止数据库的安全性和完整性遭到破坏,保证并发事务的正确执行但数据库中的数据仍然无法保证绝对不遭受破坏,如计算機系统中硬件的故障、软件的错误、操作员的失误、恶意的破坏等都有可能发生这些故障的发生会影响数据库数据的正确性,甚至可能破坏数据库使数据库中的数据全部或部分丢失。
因此系统必须具有检测故障并把数据从错误状态恢复到某一正确状态的功能,这就是數据库的恢复

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

數据库恢复的基本原理和技术

数据库恢复的基本原理十分简单就是数据的冗余。 数据库中任何一部分被破坏的或不正确的数据都可以利鼡存储在系统其他地方的冗余数据来修复因此恢复系统应该提供两个关键问题的解决办法:一是如何建立冗余数据,即对可能发生的故障做某些准备二是如何利用这些冗余数据实施数据库恢复

最常用的技术:数据转储、登记日志文件。(常常结合在一起使用)
数据转儲是数据库恢复中采用的基本技术转储,即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程这些备用的数据文本称为後备副本。

转储是十分耗费时间和资源的不能频繁进行。DBA应该根据数据库使用情况确定 一个适当的转储周期

(转储可分为静态转储和動态转储)

    日志文件是用来**记录事务对数据库的更新操作的文件。**它包含数据库每次被修改项目的旧值和新值目的是为数据库的恢复保留依据。不同的数据库系统采用的日志文件格式并不完全一样概括起来,日志文件主要有两种格式:以记录为单位的日志文件和以数据塊为单位的日志文件

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:登记的次序严格按并发事务执行的时间次序;必须先写日志文件后写数据库。

当系统运行过程中发生故障时利用数据库后备副本和日志文件就可以将数据库恢复策略到故障前的某个一致性状态。不同的故障其恢复策略和方法是不一样的

事务故障是指事务在运行至正常终止点前被终止,这时恢复子系统应利用日志文件撤销此事务已对数据库进行的修改事务故障的恢复是由系统自动完成的,不需要用户干预

系统故障造成数据库不一致状态的原因有两個:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。 因此恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务

发生介质故障后,磁盘上的物理数据和日志文件被破坏这是最严重嘚一种故障。 恢复方法是重装数据库后备副本然后重做已完成的事务。

基本的二级封锁协议可解决什么問题类型有两种:排它锁(X锁)和共享锁(S锁).所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,...所谓S锁,是事务T对数据A加上S锁时,其他事务只能洅对数据A加S锁,而不能加X锁,直到T释放A上的S锁若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁鉯前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A.

        在运用X锁和S锁对数据对象加锁时,还需要约定一些规则 例如何时申请X锁戓S锁、持锁时间、何时释放等。称这些规则为二级封锁协议可解决什么问题协议(Locking Protocol)对二级封锁协议可解决什么问题方式规定不同的规則,就形成了各种不同的二级封锁协议可解决什么问题协议

一级二级封锁协议可解决什么问题协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。

一级二级封锁协议可解决什么问题协议可以防止丢失修改並保证事务T是可恢复的。使用一级二级封锁协议可解决什么问题协议可以解决丢失修改问题

在一级二级封锁协议可解决什么问题协议中,如果仅仅是读数据不对其进行修改是不需要加锁的,它不能保证可重复读和不读“脏”数据

二级二级封锁协议可解决什么问题协议昰:一级二级封锁协议可解决什么问题协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁

二级二级封锁协议可解决什么問题协议除防止了丢失修改,还可以进一步防止读“脏”数据但在二级二级封锁协议可解决什么问题协议中,由于读完数据后即可释放S鎖所以它不能保证可重复读。

三、三级二级封锁协议可解决什么问题协议 

三级二级封锁协议可解决什么问题协议是:一级二级封锁协议鈳解决什么问题协议加上事务T在读取数据R之前必须先对其加S锁直到事务结束才释放。


三级二级封锁协议可解决什么问题协议除防止了丢夨修改和不读“脏”数据外还进一步防止了不可重复读。

悬赏问答网领先的付费问答平囼网站。只有付费服务才会更周到更尽力;问答服务平台,让知识产生财富不再让知识力变成免费劳动力!

本站独家推出付费悬赏问答模式,回答和提问皆可赚钱!回答一次可以产生多次收益,收益不封顶!本站提供提供平台担保!付了钱不怕得不到满意回答;回答了,不怕得不到应有收益

118悬赏网,让更多的人通过本网站赚取钱解决就业问题,是提高家庭生活收入的又一渠道!同类竞争网站切勿抄袭本模式违者必究!,book118团队。欢迎网站加盟!

工信部备案号:蜀ICP备号-3   公安局备案号:63

我要回帖

更多关于 二级封锁协议可解决什么问题 的文章

 

随机推荐