《数据库保护 》PPT课件.ppt

上传人:wuy****n92 文档编号:71668101 上传时间:2023-02-04 格式:PPT 页数:51 大小:375.50KB
返回 下载 相关 举报
《数据库保护 》PPT课件.ppt_第1页
第1页 / 共51页
《数据库保护 》PPT课件.ppt_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《《数据库保护 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库保护 》PPT课件.ppt(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、上一页上一页下一页下一页返回首页返回首页第第 五五 章章 数据库安全保护数据库安全保护数据库系统中的数据是由数据库系统中的数据是由DBMSDBMS统一进行管理和控制的。统一进行管理和控制的。为了适应和满足数据共享的环境和要求,为了适应和满足数据共享的环境和要求,DBMSDBMS要保证整个要保证整个系统的正常运转,防止数据意外丢失和不一致数据的产生,系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是以及当数据库遭受破坏后能迅速地恢复正常,这就是数据数据库的安全保护。库的安全保护。DBMSDBMS对数据库的安全保护功能是通过四方面实现的,对数据库的安

2、全保护功能是通过四方面实现的,即安即安全性控制、完整性控制、并发性控制和数据库恢复。全性控制、完整性控制、并发性控制和数据库恢复。上一页上一页下一页下一页返回首页返回首页第第 五五 章章 数据库安全保护数据库安全保护5.1 数据库安全性数据库安全性5.2 完整性控制完整性控制5.3 并发控制并发控制5.4 数据库的恢复数据库的恢复上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性数数据据库库的的安安全全性性是是指指保保护护数数据据库库,以以防防止止非非法法使使用用所所造成数据的泄露、更改或破坏。造成数据的泄露、更改或破坏。安全性控制的一般方法安全性控制的一般方法v

3、对有意的非法活动可采用对有意的非法活动可采用加密存、取数据加密存、取数据的方法的方法控制控制;v对有意的非法操作可使用对有意的非法操作可使用用户身份验证、限制操用户身份验证、限制操作权作权来控制;来控制;v对无意的损坏可采用提高对无意的损坏可采用提高系统的可靠性和数据备系统的可靠性和数据备份份等方法来控制。等方法来控制。上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性安全控制模型安全控制模型 在在计计算算机机系系统统中中,安安全全措措施施是是一一级级一一级级层层层层设设置置的的,安安全控制模型如图全控制模型如图5.15.1所示。所示。图图5-1 计算机系统的安全

4、控制模型计算机系统的安全控制模型 文件操作文件操作 控制控制 操作权操作权 控制控制 身份身份 验证验证用户用户数数 据据 库库应应 用用 程程序序数数 据据 库库管管 理理 系系统统操作操作系统系统加加 密密 存存储储 与与 冗冗余余数据库数据库上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性根据图根据图5.15.1的安全模型,当用户进入数据库系统时,系统的安全模型,当用户进入数据库系统时,系统首先根据输入的用户标识进行首先根据输入的用户标识进行身份的鉴定身份的鉴定,只有合法的用,只有合法的用户才准许进入系统。户才准许进入系统。对已进入系统的用户,对已进入系统

5、的用户,DBMSDBMS还要验证此用户是否具有还要验证此用户是否具有操作操作权权,有操作权才能进行操作。,有操作权才能进行操作。DBMSDBMS是建立在操作系统之上的,在操作系统一级设有相应是建立在操作系统之上的,在操作系统一级设有相应的保护措施,比如设置的保护措施,比如设置文件的访问权限文件的访问权限。数据可以通过数据可以通过加密的形式加密的形式存储到数据库中存储到数据库中上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性一一.用户身份验证用户身份验证用用一一个个用用户户名名或或用用户户标标识识符符来来标标明明用用户户的的身身份份,系系统统以以此此来来鉴鉴别别用

6、用户户的的合合法法性性。如如果果正正确确,则则可可进进入入下下一一步步的的核核实实,否否则,不能使用计算机。则,不能使用计算机。用用户户标标识识符符是是用用户户公公开开的的标标识识,它它不不足足以以成成为为鉴鉴别别用用户户身身份份的的凭凭证证。为为了了进进一一步步核核实实用用户户身身份份,常常采采用用用用户户名名与与口口令令(PasswordPassword)相相结结合合的的方方法法,系系统统通通过过核核对对口口令令判判别别用用户户身身份的真伪。份的真伪。v系系统统有有一一张张用用户户口口令令表表,为为每每个个用用户户保保持持一一个个记记录录,包包括用户名和口令两部分数据。括用户名和口令两部分

7、数据。v用户先输入用户名,然后系统要求用户输入口令。用户先输入用户名,然后系统要求用户输入口令。v为了保密,用户在终端上输入的口令不显示在屏幕上。为了保密,用户在终端上输入的口令不显示在屏幕上。v系统核对口令以鉴别用户身份。系统核对口令以鉴别用户身份。上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性一一.用户身份验证用户身份验证v通过用户名和口令来鉴定用户的方法简单易行,但该方法通过用户名和口令来鉴定用户的方法简单易行,但该方法在使用时,由于用户名和口令的产生和使用比较简单,也容在使用时,由于用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方

8、法。易被窃取,因此还可采用更复杂的方法。v 例如,每个用户都预先约定好一个过程或者函数,鉴别用户例如,每个用户都预先约定好一个过程或者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据计算结果辨别用户身份的合过程或者函数进行计算,系统根据计算结果辨别用户身份的合法性。法性。v 例如,让用户记住一个表达式,如例如,让用户记住一个表达式,如T=X+2Y,T=X+2Y,系统告诉用户系统告诉用户X=1,Y=2,X=1,Y=2,如果用户回答如果用户回答T=5T=5,则证实了该用户的身份。则证实了该用户的

9、身份。v 当然,这是一个简单的例子,在实际使用中,还可以设计复当然,这是一个简单的例子,在实际使用中,还可以设计复杂的表达式,以使安全性更好。系统每次提供不同的杂的表达式,以使安全性更好。系统每次提供不同的X X,Y Y值,值,其他人可能看到的是其他人可能看到的是X X、Y Y的值,但不能推算出确切的变换公式的值,但不能推算出确切的变换公式T T。上一页上一页下一页下一页返回首页返回首页5.1 5.1 数据库安全性数据库安全性二二.用户操作权限管理用户操作权限管理1.1.权限的种类权限的种类 对数据库管理系统进行维护的权限对数据库管理系统进行维护的权限 对数据库中的对象和数据进行操作的权限对数

10、据库中的对象和数据进行操作的权限v对数据库对象的权限,包括创建、删除和修改数据库对象对数据库对象的权限,包括创建、删除和修改数据库对象v对数据库数据的操作权,包括对表、视图数据的增、删、改、查权对数据库数据的操作权,包括对表、视图数据的增、删、改、查权2.2.数据库用户的分类数据库用户的分类 (1 1)数据库系统管理员:具有一切权限。)数据库系统管理员:具有一切权限。(2 2)数据库对象拥有者:对其所拥有的对象具有一切权限。)数据库对象拥有者:对其所拥有的对象具有一切权限。(3 3)普通用户:只具有对数据库数据的增、删、改、查权。)普通用户:只具有对数据库数据的增、删、改、查权。上一页上一页下

11、一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制一一.数据库完整性的含义数据库完整性的含义 数据库的完整性是指保护数据库中数据的数据库的完整性是指保护数据库中数据的正确性、有效性和相容正确性、有效性和相容 性,性,防止错误的数据进入数据库造成无效操作。防止错误的数据进入数据库造成无效操作。有关完整性的含义在第一章中已作简要介绍。有关完整性的含义在第一章中已作简要介绍。v 比如年龄属于数值型数据,只能含比如年龄属于数值型数据,只能含0,1,90,1,9,不能含字母或,不能含字母或 特殊符号;特殊符号;v 月份只能用月份只能用1 11212之间的正整数表示;之间的正整数表示;v 表示

12、同一事实的两个数据应相同,否则就不相容,如一个人表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个学号。不能有两个学号。显然,维护数据库的完整性非常重要,数据库中的数据是否具备显然,维护数据库的完整性非常重要,数据库中的数据是否具备 完整性关系到数据能否真实地反映现实世界完整性关系到数据能否真实地反映现实世界。上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制 数据库的完整性和安全性是数据库保护的两个不同的方面。数据库的完整性和安全性是数据库保护的两个不同的方面。安全性安全性是保护数据库,以防止非法使用所造成数据的泄露、是保护数据库,以防止非法使用所造成数

13、据的泄露、更改或破坏,安全性措施的防范对象是更改或破坏,安全性措施的防范对象是非法用户和非法操作;非法用户和非法操作;完整性完整性是防止合法用户使用数据库时向数据库中加入不符是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是合语义的数据,完整性措施的防范对象是不合语义的数据。不合语义的数据。但从数据库的安全保护角度来讲,安全性和完整性又是密但从数据库的安全保护角度来讲,安全性和完整性又是密切相关的。切相关的。上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制二二.完整性规则的组成完整性规则的组成为为了了实实现现完完整整性性控控制制,数数据

14、据库库管管理理员员应应向向DBMS提提出出一一组组完完整整性性规则,来检查数据库中的数据,看其是否满足语义约束。规则,来检查数据库中的数据,看其是否满足语义约束。这这些些语语义义约约束束构构成成了了数数据据库库的的完完整整性性规规则则,这这组组规规则则作作为为DBMS控制数据完整性的依据。控制数据完整性的依据。它定义了何时检查、检查什么、查出错误又怎样处理等事项。它定义了何时检查、检查什么、查出错误又怎样处理等事项。具体地说,完整性规则主要由以下三部分构成:具体地说,完整性规则主要由以下三部分构成:1 触发条件:触发条件:规定系统什么时候使用规则检查数据;规定系统什么时候使用规则检查数据;2

15、约约束束条条件件:规规定定系系统统检检查查用用户户发发出出的的操操作作请请求求违违背背了了什什么么样样的完整性约束条件;的完整性约束条件;3 违违约约响响应应:规规定定系系统统如如果果发发现现用用户户的的操操作作请请求求违违背背了了完完整整性性约约束束条条件件,应应该该采采取取一一定定的的动动作作来来保保证证数数据据的的完完整整性性,即即违违约时要做的事情。约时要做的事情。上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制关系模型的完整性包括关系模型的完整性包括实体完整性,参照完整性和用户定义完整性。实体完整性,参照完整性和用户定义完整性。对于违反实体完整性和用户定义

16、完整性规则的操作一般都是采用对于违反实体完整性和用户定义完整性规则的操作一般都是采用拒绝拒绝执行的方式执行的方式进行处理。进行处理。而对于违反参照完整性的操作,并不都是简单的拒绝执行,一般在接而对于违反参照完整性的操作,并不都是简单的拒绝执行,一般在接受这个操作的同时,执行一些附加的操作,以保证数据库的状态仍然受这个操作的同时,执行一些附加的操作,以保证数据库的状态仍然是正确的。是正确的。例如:在删除被参照关系中的元组时,应该将参照关系中所有的外码例如:在删除被参照关系中的元组时,应该将参照关系中所有的外码值与被参照关系中要删除元组主码值相对应的元组一起删除。值与被参照关系中要删除元组主码值相

17、对应的元组一起删除。比如,要删除比如,要删除S S关系中关系中SNO=S1SNO=S1的元组,而的元组,而SCSC关系中又有两个关系中又有两个SNO=S1SNO=S1的元组。的元组。这时根据应用环境的语义,因为当一个学生毕业或退学后,他的个这时根据应用环境的语义,因为当一个学生毕业或退学后,他的个人记录从人记录从S S关系中删除,选课记录也应随之从关系中删除,选课记录也应随之从SCSC表中删除,所以应表中删除,所以应该将该将SCSC关系中两个关系中两个SNO=S1SNO=S1的元组一起删除。的元组一起删除。上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制数据完整性的

18、实现一般是在服务器端完成的数据完整性的实现一般是在服务器端完成的服务器端实现数据完整性的方法:服务器端实现数据完整性的方法:v 在定义表的时候声明数据完整性在定义表的时候声明数据完整性v 在服务器端编写触发器实现数据完整性在服务器端编写触发器实现数据完整性一旦进入系统,就开始执行数据完整性规则。一旦进入系统,就开始执行数据完整性规则。其主要优点是违约由系统来处理,而不是由用户处理。其主要优点是违约由系统来处理,而不是由用户处理。数数据据库库系系统统的的整整个个完完整整性性控控制制都都是是围围绕绕着着完完整整性性约约束束条条件件进进行行的的,从从这这个个角角度度来来看看,完完整整性性约约束束条条

19、件件是是完完整整性性控控制制机制的核心。机制的核心。上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整性控制完整性控制三三.完整性约束条件的完整性约束条件的作用对象作用对象 完整性约束条件的作用对象可以是完整性约束条件的作用对象可以是表、元组和列。表、元组和列。1.1.列级约束列级约束:即对数据类型、数据格式、取值范围等进行规定。:即对数据类型、数据格式、取值范围等进行规定。v 对数据类型的约束对数据类型的约束,包括数据的类型、长度、单位和精度等。,包括数据的类型、长度、单位和精度等。例如,规定学生姓名的数据类型应为字符型,长度为例如,规定学生姓名的数据类型应为字符型,长度为8 8。

20、v 对数据格式的约束对数据格式的约束。例如,规定出生日期的数据格式为例如,规定出生日期的数据格式为YY.MM.DDYY.MM.DD。v 对取值范围的约束。对取值范围的约束。例如,月份的取值范围为例如,月份的取值范围为1 11212,日期,日期1 13131 v 对空值的约束。对空值的约束。空值表示未定义或未知的值,它与零值空值表示未定义或未知的值,它与零值 空格不同。有的列值允许空值,有的则不允许。空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空值例如,学号和课程号不可以为空值,但成绩可以为空值上一页上一页下一页下一页返回首页返回首页5.2 5.2 完整

21、性控制完整性控制三三.完整性约束条件的完整性约束条件的作用对象作用对象 2.2.元组约束元组约束 元组的约束是元组的约束是元组中各个字段之间的联系的元组中各个字段之间的联系的约束,约束,如:开始日期小于结束日期,职工的最如:开始日期小于结束日期,职工的最低工资不能低于规定的最低保障金等。低工资不能低于规定的最低保障金等。3.3.关系约束关系约束 关系约束是指关系约束是指若干元组之间、关系之间的联若干元组之间、关系之间的联系的约束。系的约束。比如学号的取值不能重复也不能取比如学号的取值不能重复也不能取空值,学生修课表中的学号的取值受学生表中空值,学生修课表中的学号的取值受学生表中的学号取值的约束

22、等的学号取值的约束等 。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制每个用户在存取数据库中的数据时,可能是每个用户在存取数据库中的数据时,可能是串行执行串行执行,即每个,即每个时刻只有一个用户程序运行,也可能是时刻只有一个用户程序运行,也可能是多个用户并行地存取数多个用户并行地存取数据库。据库。数据库的最大特点之一就是数据库的最大特点之一就是数据资源是共享数据资源是共享的,串行执行意味的,串行执行意味着一个用户在运行程序时,其他用户程序必须等到这个用户程着一个用户在运行程序时,其他用户程序必须等到这个用户程序结束才能对数据库进行存取,这样如果一个用户程序涉及大序结束

23、才能对数据库进行存取,这样如果一个用户程序涉及大量数据的输入量数据的输入/输出交换,则数据库系统的大部分时间将处于闲输出交换,则数据库系统的大部分时间将处于闲置状态。置状态。因此,为了充分利用数据库资源,很多时候数据库用户都是对因此,为了充分利用数据库资源,很多时候数据库用户都是对 数据库系统数据库系统并行存取数据并行存取数据,这样就会发生多个用户并发存取同一,这样就会发生多个用户并发存取同一 数据块的情况,如果对并发操作不加控制可能会产生不正确的数数据块的情况,如果对并发操作不加控制可能会产生不正确的数 据,破坏数据的完整性,据,破坏数据的完整性,并发控制并发控制就是解决这类问题,就是解决这

24、类问题,以保持数以保持数 据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式 给用户提供数据。给用户提供数据。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制一一.事务(事务(TransactionTransaction)事务是事务是用户定义的数据操作系列用户定义的数据操作系列,这些操作作为一,这些操作作为一个个完整的工作单元完整的工作单元.一一个个事事务务可可以以是是一一组组SQL语语句句、一一条条SQL语语句句或或整整个程序,一个应用程序可以包括多个事务。个程序,一个应用程序可以包括多个事务。一个事务

25、内的所有语句被作为一个事务内的所有语句被作为一个整体一个整体,要么全部,要么全部执行,要么全部不执行。执行,要么全部不执行。例如:对于一个转帐活动:例如:对于一个转帐活动:A帐户转帐给帐户转帐给B帐户帐户n元元钱,这个活动包含两个动作:钱,这个活动包含两个动作:第一个动作:第一个动作:A帐户帐户 n 第二个动作:第二个动作:B帐户帐户 n 1.1.事务的定义事务的定义上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制事事务务的的开开始始与与结结束束可可以以由由用用户户显显式式控控制制。如如果果用用户户没没有有显显式式地地定定义事务,则由义事务,则由DBMSDBMS按照缺省

26、规定自动划分事务。按照缺省规定自动划分事务。在在SQLSQL语言中,定义事务的语句有三条:语言中,定义事务的语句有三条:vBEGIN TRANSACTIONBEGIN TRANSACTION:表示事务的开始;表示事务的开始;vCOMMITCOMMIT(提提交交):表表示示事事务务的的正正常常结结束束,即即此此时时事事务务中中所所有有操作都会保存到物理数据库中,成为永久操作操作都会保存到物理数据库中,成为永久操作vROLLBACKROLLBACK(回回滚滚):表表示示事事务务的的异异常常结结束束,在在事事务务运运行行的的过过程程中中发发生生了了某某种种故故障障,事事务务不不能能继继续续执执行行,

27、系系统统将将事事务务中中对对数数据据库库的的所所有有已已完完成成的的更更新新操操作作全全部部撤撤销销,再再回回滚滚到到事事务务开开始始时的状态。时的状态。例:例:BEGIN TRANSACTION UPDATE 支付表支付表 SET 帐户总额帐户总额 帐户总额帐户总额 nWHERE 帐户名帐户名 A UPDATE 支付表支付表 SET 帐户总额帐户总额 帐户总额帐户总额 nWHERE 帐户名帐户名 B COMMIT上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制2.2.事务的特征事务的特征 事事务务是是由由有有限限的的数数据据操操作作序序列列组组成成,但但并并不不是是任

28、任意意的的数数据据操操作作序序列列都都能能成成为为事事务务,为为了了保保护护数数据据的的完完整整性性,一一般般要要求求事务具有以下四个特征:事务具有以下四个特征:v原原子子性性(AtomicAtomic):是是指指一一个个事事务务是是一一个个不不可可分分割割的的工工作作单单位位,事事务务在在执执行行时时,应应该该遵遵守守“要要么么不不做做,要要么么全全做做”的原则,即不允许事务部分的完成。的原则,即不允许事务部分的完成。v一一致致性性(ConsistencyConsistency):是是指指事事务务执执行行的的结结果果必必须须是是使使数数据据库库从从一一个个一一致致性性状状态态变变到到另另一一

29、个个一一致致性性状状态态。例例如如前前面面的的转转帐帐如如果果只只执执行行其其中中一一个个操操作作,则则数数据据库库处处于于不不一一致致状状态态,帐帐务务会会出出现现问问题题。也也就就是是说说,两两个个操操作作要要么么全全做做,要要么全不做,否则就不能成为事务。么全不做,否则就不能成为事务。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制2.2.事务的特征事务的特征v隔隔离离性性(IsolationIsolation):指指数数据据库库中中一一个个事事务务的的执执行行不不能能被被其其它它事事务务干干扰扰。即即一一个个事事务务内内部部的的操操作作及及使使用用的的数数据据对

30、对并并发发的的其其他他事事务务是是隔隔离离的的。并并发发控控制制就就是是为为了了保证事务间的隔离性。保证事务间的隔离性。v持持久久性性(DurabilityDurability):指指一一个个事事务务一一旦旦提提交交,它它对对数数据据库库中中数数据据的的改改变变就就应应该该是是持持久久的的,即即使使数数据据库库因因故障而受到破坏,故障而受到破坏,DBMSDBMS也应该能够恢复。也应该能够恢复。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制二二.并发操作与数据的不一致性并发操作与数据的不一致性 例例 并发订票操作。假设有两个飞机订票点并发订票操作。假设有两个飞机订票点A

31、 A和和B,B,如果如果A A和和B B两个订票点两个订票点恰巧同时办理同一架航班的飞机订票业务。该航班目前的机票余额数恰巧同时办理同一架航班的飞机订票业务。该航班目前的机票余额数R R=10=10张,张,A A订票点(事务订票点(事务A)A)卖出卖出6 6张机票张机票,B B订票点(事务订票点(事务B B))卖出卖出5 5张机票,如果正常操作,即事务张机票,如果正常操作,即事务A A执行完毕再执行事务执行完毕再执行事务B B ,则飞机票则飞机票时不够的。但是如果按照如下顺序操作,则会有不同的结果:时不够的。但是如果按照如下顺序操作,则会有不同的结果:vA A订票点(事务订票点(事务A)A)读

32、出航班目前的机票余额数读出航班目前的机票余额数R R=10=10张;张;vB B订票点(事务订票点(事务B)B)读出航班目前的机票余额数读出航班目前的机票余额数R R=10=10张;张;vA A订票点卖出订票点卖出6 6张机票张机票,修改机票余额数修改机票余额数R R=10=106=46=4,把把R R=4=4写写 回到数据库;回到数据库;vB B订票点卖出订票点卖出5 5张机票张机票,修改机票余额数修改机票余额数R R=10=105=55=5,把把R R=5=5写写回到数据库;回到数据库;结果数据库中的票数却只少了结果数据库中的票数却只少了5 5张张,得到这种错误的结果是得到这种错误的结果是

33、由两个事务由两个事务并发操作引起的并发操作引起的.上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制数据库的并发操作导致的数据库不一致性主要数据库的并发操作导致的数据库不一致性主要 有以下四种:有以下四种:v 丢失修改(丢失修改(Lost UpdateLost Update)v 污读(污读(Dirty ReadDirty Read)v 不可重读(不可重读(Unrepeatable ReadUnrepeatable Read)v 产生产生“幽灵幽灵”数据数据上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制1 1丢失修改(丢失修改(Lost Updat

34、eLost Update)当两个事务当两个事务T T1 1和和T T2 2读入同一数据做修改,并发执行时,读入同一数据做修改,并发执行时,T T2 2把把T T1 1或或T T1 1把把T T2 2的修改结果覆盖掉。的修改结果覆盖掉。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制2 2污读(污读(Dirty ReadDirty Read)事事务务T T1 1更更新新了了数数据据R R,事事务务T T2 2读读取取了了更更新新后后的的数数据据R R,事事务务T T1 1由由于于某某种种原原因因被被撤撤消消,修修改改无无效效,数数据据R R恢恢复复原原值值。事事务务T T

35、2 2得得到到的数据与数据库的内容不一致,这种情况称为的数据与数据库的内容不一致,这种情况称为“污读污读”。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制3 3不可重读(不可重读(Unrepeatable ReadUnrepeatable Read)事事务务T T1 1读读取取了了数数据据后后,事事务务T T2 2更更新新了了T T1 1读读取取的的数数据据,当当事事务务T T1 1再再读读取取数数据据以以进进行行相相同同操操作作时时,得得到到的的两两次次值值不不一一致致,这这种情况称为种情况称为“不可重读不可重读”。上一页上一页下一页下一页返回首页返回首页5.3 5

36、.3 并发控制并发控制4.产生产生“幽灵幽灵”数据数据 实际属于不可重复读的范畴。指当事务实际属于不可重复读的范畴。指当事务T1按一定条件从数据库按一定条件从数据库中读取了某些数据记录后,事务中读取了某些数据记录后,事务T2删除了其中的部分记录,或者删除了其中的部分记录,或者在其中添加了部分记录,则当在其中添加了部分记录,则当T1再次按相同条件读取数据时,发再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。这样的数据对这样的数据对T1来说就是来说就是“幽灵幽灵”数据或称数据或称“幻影幻影”数据。数据。产产

37、生生上上述述四四类类数数据据不不一一致致性性的的主主要要原原因因就就是是并并发发操操作作破破坏坏了事务的隔离性。了事务的隔离性。并并发发控控制制就就是是要要求求DBMSDBMS提提供供并并发发控控制制功功能能以以正正确确的的方方法法调调度度并并发发事事务务,避避免免并并发发事事务务之之间间的的相相互互干干扰扰造造成成数数据据的的不不一致性,保证数据库的完整性。一致性,保证数据库的完整性。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制三三.并发控制措施并发控制措施v 并发控制的主要方式是并发控制的主要方式是封锁机制,即加锁(封锁机制,即加锁(Locking)。v 加锁加

38、锁就是事务就是事务T在对某个数据操作之前,先向系统发出请在对某个数据操作之前,先向系统发出请求,对其加锁。加锁后事务求,对其加锁。加锁后事务T对其要操作的数据具有了一定对其要操作的数据具有了一定的控制权,在事务的控制权,在事务T释放它的锁之前,其他事务不能操作这释放它的锁之前,其他事务不能操作这些数据。些数据。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制共享锁(共享锁(Share LockShare Lock,又称读锁,又称读锁,,简称为简称为S S锁锁)其其采采用用的的原原理理是是允允许许其其他他用用户户对对同同一一数数据据对对象象进进行行查询查询,但,但不能不能

39、对该数据对象对该数据对象进行修改进行修改。事事务务T对对数数据据对对象象A加加了了S锁锁,则则事事务务T可可以以读读A,但但不不能能修修改改A,其其它它事事务务只只能能再再对对A加加S锁锁,而而不不能能加加X锁锁,直到,直到T释放了释放了A上的上的S锁。锁。这这就就保保证证了了其其他他事事务务在在T T释释放放R R上上的的S S锁锁之之前前,只只能能读读取取R R,而不能再对而不能再对R R作任何修改。作任何修改。v基本的封锁类型有两种:排它锁和共享锁基本的封锁类型有两种:排它锁和共享锁排它锁(排它锁(Exclusive LockExclusive Lock,又称写锁,简称为又称写锁,简称为

40、X X锁)锁)其采用的原理是其采用的原理是禁止并发操作。禁止并发操作。事事务务T对对数数据据对对象象A加加了了X锁锁,则则允允许许T读读取取和和修修改改A,但但不不允允许许其其它它事事务务再再对对A加加任任何何类类型型的的锁锁和和进进行行任任何操作。何操作。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制四四.封锁协议封锁协议封锁可以保证合理的进行并发控制,保证数据的一致性。封锁可以保证合理的进行并发控制,保证数据的一致性。在在封封锁锁时时,要要考考虑虑一一定定的的封封锁锁规规则则,例例如如,何何时时开开始始封封锁锁、封封锁多长时间、何时释放等锁多长时间、何时释放等,这

41、些封锁规则称为封锁协议这些封锁规则称为封锁协议。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。封锁协议在不同程序上对正确控制并发操作提供了一定的保证。封锁协议在不同程序上对正确控制并发操作提供了一定的保证。上上面面讲讲述述过过的的并并发发操操作作所所带带来来的的丢丢失失更更新新、污污读读和和不不可可重重读读等等数数据据不不一一致致性性问问题题,可可以以通通过过三三级级封封锁锁协协议议在在不不同同程程度度上上给给予予解决。解决。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制1 1一级封锁协议一级封锁协议规规则

42、则是是:事事务务T T在在修修改改数数据据对对象象之之前前必必须须对对其其加加X X锁锁,直直到到事务结束时才释放锁。事务结束时才释放锁。一级封锁协议可以一级封锁协议可以防止丢失修改。防止丢失修改。一一级级封封锁锁协协议议只只有有当当修修改改数数据据时时才才进进行行加加锁锁,如如果果只只是是读读取取数数据据并并不不加加锁锁,所所以以它它不不能能防防止止“污污读读”和和“重重读读”数数据。据。例例:事事务务T T要要对对A A进进行行修修改改,因因此此在在读读A A之之前前先先对对A A加加X X锁锁其其它事务必须等待它事务必须等待上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制

43、并发控制事务事务T2t1t2t3 t4事务事务T1时间时间(1)对)对A加加X锁锁 获得获得(2)读)读A16(3)要对要对A加加X锁锁等待等待(4)修改)修改AA1 A15 t6 t7 t8 t5(5)释放对)释放对A的的X锁锁(6)(7)(8)(9)等待等待获得获得A对对X的锁的锁读读A15修改修改AA4写回写回A11释放释放A对对X的的锁锁一级封锁协议举例一级封锁协议举例上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制2 2二级封锁协议二级封锁协议规规则则是是:在在一一级级封封锁锁协协议议的的基基础础上上,另另外外加加上上事事务务T T在在读读取数据取数据R R之

44、前必须先对其加之前必须先对其加S S锁锁,读完后释放,读完后释放S S锁。锁。二二级级封封锁锁协协议议除除了了可可以以防防止止丢丢失失修修改改外外,还还可可以以防防止止读读“脏脏”数据。数据。在在二二级级封封锁锁协协议议协协议议中中,由由于于事事务务T读读完完数数据据即即释释放放S锁锁,因此,因此,不能保证可重复读数据。不能保证可重复读数据。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对C加加X锁锁 获得获得(2)读)读C50(3)求)求CC2 写回写回C100要对要对C加加S锁锁 等待等待(4)t6t7t8

45、t5(5)回滚)回滚(6)释放)释放X锁锁(7)(8)等待等待等待等待获得获得C的的S锁锁读读C50释放释放C的的S锁锁二级封锁协议举例二级封锁协议举例上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制3 3三级封锁协议三级封锁协议规规则则是是:在在一一级级封封锁锁协协议议的的基基础础上上,另另外外加加上上事事务务T T在在读读取取数数据据R R之之前前必必须须先先对对其其加加S S锁锁,读读完完后后并并不不释释放放S S锁锁,而而直到事务直到事务T T结束才释放。结束才释放。三三级级封封锁锁协协议议除除了了可可以以防防止止更更新新丢丢失失问问题题和和“污污读读”数数据据

46、外外,还还可可进进一一步步防防止止不不可可重重读读数数据据,彻彻底底解解决决了了并并发发操作所带来的三个不一致性问题。操作所带来的三个不一致性问题。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制读读B100 修改修改B=B*2 写回写回B200(3)(7)(1)对)对A、B分别加分别加 S锁锁 获得获得(2)读)读A50,B100 求求AB150(4)读)读A50,B100求求AB150(5)将和值写入)将和值写入(6)释放)释放A的锁的锁 释放释放B的锁的锁(8)(9)t1t2t3t4事务事务T1时间时间事务事务T2等待等待t6t7t8t5等待等待等待等待获得获得B

47、的的X锁锁要对要对B加加X锁锁 等待等待t9释放对释放对B的的X锁锁三级封锁协议举例三级封锁协议举例上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制总结:总结:X锁(对写锁(对写数据数据 S锁(对只锁(对只读数据)读数据)不丢失不丢失修改修改(写)(写)不读脏不读脏数据数据(读)(读)可重复可重复读(读)读(读)一级一级事务全程加事务全程加锁锁 不加不加 二级二级事务全程加事务全程加锁锁 事务开始事务开始加,读完加,读完即放即放 三级三级事务全程加事务全程加锁锁 事务全程事务全程加锁加锁 三个封锁协议的主要区别在于:三个封锁协议的主要区别在于:什么操作需要申请封锁,以及

48、何时释放锁。什么操作需要申请封锁,以及何时释放锁。上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制五五.死锁死锁图68封封锁锁技技术术可可有有效效解解决决并并行行操操作作的的一一致致性性问问题题,但但也也可产生新的问题,即可产生新的问题,即死锁问题。死锁问题。在在同同时时处处于于等等待待状状态态的的两两个个或或多多个个事事务务中中,其其中中的的每每一一个个在在它它能能够够进进行行之之前前,都都等等待待着着某某个个数数据据、而而这这个个数数据据已已被被它它们们中中的的某某个个事事务务所所封封锁锁,这这种种状状态态称为称为死锁。死锁。上一页上一页下一页下一页返回首页返回首页

49、5.3 5.3 并发控制并发控制例如,事务例如,事务T T1 1封锁了数据封锁了数据R R1 1,事务,事务T T2封锁了数据封锁了数据R R2 2,然后然后T T1 1又请又请求封锁求封锁R R2 2,由于由于T T2 2封锁了封锁了R R2 2,因此因此T T1 1等待等待T T2 2释放释放R R2 2上的锁,然后上的锁,然后T T2 2又请求封锁又请求封锁R R1 1 ,由于由于T T1 1已经封锁了已经封锁了R R1 1,因此因此T T2 2也只能等待也只能等待T T1 1释放释放R R2 2上的锁,此时上的锁,此时T T1 1和和T T2 2都在等待对方先释放锁,因而形成死锁。都在

50、等待对方先释放锁,因而形成死锁。t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对R1加锁加锁(2)(3)请求对)请求对R2加锁加锁 等待等待请求对请求对R1加锁加锁等待等待(4)等待)等待等待等待对对R2加锁加锁上一页上一页下一页下一页返回首页返回首页5.3 5.3 并发控制并发控制图68死死锁锁一一旦旦发发生生,系系统统效效率率将将会会大大大大下下降降,因因而而要要尽尽量量避避免免死锁的发生。死锁的发生。(1)一次封锁法一次封锁法:每个事务一次将所有要使用的数据全部:每个事务一次将所有要使用的数据全部依次加依次加锁,并要求加锁成功,只要一个加锁不成功,表示本次加锁锁,并要求加锁成

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com