数据库原理及应用教程(第5版) (微课版)课件 第5章 数据库优化和管理_第1页
数据库原理及应用教程(第5版) (微课版)课件 第5章 数据库优化和管理_第2页
数据库原理及应用教程(第5版) (微课版)课件 第5章 数据库优化和管理_第3页
数据库原理及应用教程(第5版) (微课版)课件 第5章 数据库优化和管理_第4页
数据库原理及应用教程(第5版) (微课版)课件 第5章 数据库优化和管理_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京林业大学数据库原理与应用数据库安全内容概述背景企业的业务过程信息国家机构的业务管理信息国防情报等具有密级的信息数据库······管理存储和使用存储和使用············DBMS为了适应和满足数据共享的环境和要求,DBMS要保证整个系统的正常运转,防止数据泄露,恶意修改,不一致产生,产生问题后的及时恢复,需要一整套而有效的保护措施。数据库安全内容概述DBMS对数据安全的保护功能安全性控制完整性控制并发性控制数据库恢复数据库安全内容针对的问题数据库安全内容概述安全性控制完整性控制并发性控制数据库恢复防止数据泄露,恶意修改产生问题后的及时恢复防止数据的不一致性数据库安全性含义、控制方法及SQLServer安全性机制数据库安全性含义安全性控制的一般方法SQLServer数据库安全性机制总结本章目录CONTENTS数据库安全性含义数据库安全性含义法律、社会和伦理方面环境控制方面政策方面计算机软硬件的安全性运行方面系统软件方面物理控制方面数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。安全性控制的一般方法编写合法的程序绕过DBMS的安全管理机制,直接在操作系统上,读取、修改相关数据。用户登录数据库管理系统后,使用了不在其权限范围中的数据。……安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。安全性控制的主要问题面临的问题:安全性不仅是数据库层面的问题,在计算机系统中都存在这个问题。在计算机系统中,安全措施是通过层层设置的,安全模型的层次如下:安全性控制模型用户DBMS数据库操作系统安全控制模型的层次用户标识和鉴定数据库安全性控制的手段用户存取权限控制定义视图数据加密数据审计数据库安全性控制手段由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识。每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。用户标识和鉴定手段概述用户提供标识系统用户提供标识存储合法标识比较服务器级别安全性管理SQLServer登录账号的相关操作SQLServer身份验证模式SQLServer服务器角色总结主要内容CONTENTSSQLServer登录账号的相关操作登录账号和用户账号在SQLServer中,账号有两种:登录账号(LoginName)数据库的用户账号(UserName)数据库及其管理系统服务器表和视图登录账号数据库的用户账号创建登录账号的过程创建登录账号的用户名和密码等登录标识信息。创建登录账号的服务器角色创建登录账号的登录名、验证模式和密码步骤如下:‘对象资源管理器’;展开‘安全性’节点;右键单击‘登录名’;选择‘新建登录名’;输入登录名;选择身份验证模式;输入密码并确认;选择密码策略。指定登录账号的服务器角色步骤如下:选择‘服务器角色’;确定服务器角色并点击‘确认’。修改和删除登录账号修改登录账号在‘对象资源管理器’中展开‘安全性’节点下面的‘登录名’节点,右键选择要修改的登录名,选择弹出菜单中的‘属性’菜单就可以对登录账号进行修改。删除登录账号在‘对象资源管理器’中展开‘安全性’节点下面的‘登录名’节点,右键选择要删除的登录名,选择弹出菜单中的‘删除’菜单即可删除指定的登录账号。SQLServer身份验证模式SQLServer身份验证方法的设置步骤如下:‘对象资源管理器’中右键‘服务器’弹出菜单中选择‘属性’‘服务器属性’窗口中‘选择左侧的‘安全性’选择身份验证模式重启SQLServer两种主要的验证模式Windows身份验证使用Windows操作系统进行用户的登录身份验证将验证用户的工作让windows进行。只支持windows环境的验证。混合验证方式SQLServer自行进行用户的登录身份验证支持非windows用户登录。一般用于各类Web程序应用使用数据库的情况。SQLServer服务器角色SQLServer服务器角色的查看主要步骤:角色是权限的集合,将不同权限根据业务关系,组成角色。SQLServer默认提供的角色如图所示:默认安装的角色权限概述数据库管理员不能创建服务器角色,只能够将其他角色或者用户添加到服务器角色中。服务器角色描

述bulkadmin允许非sysadmin用户运行BULKINSERT语句dbcreator创建、更改、删除和还原任何数据库diskadmin管理磁盘文件processadmin终止SQLServer实例中运行的进程public每个SQLServer登录账号都属于public服务器角色securityadmin管理登录名及其属性serveradmin更改服务器范围的配置选项和关闭服务器setupadmin添加和删除链接的服务器,并且也可以执行某些系统存储过程sysadmin在服务器中执行任何活动总结知识点总结账号登录账号用户账号创建方法修改方法删除方法用户名验证模式密码策略windows混合服务器角色用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性。用户标识和鉴定标识的表示方法用户标识和鉴定标识的表示方法用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。通过用户名和口令来鉴定用户的方法简单易行,但用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方法。用户存取权限控制手段概述用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。在数据库系统中,定义用户存取权限称为授权。这些授权定义经过编译后以一张授权表的形式存放在数据字典中。实施方法建立授权表用户标识数据对象操作类型用户存取权限控制存取权限的例子对于授权的使用,一个衡量授权机制的重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。数据对象操作类型模式模式建立、修改、检索外模式建立、修改、检索内模式建立、修改、检索数据表查找、插入、修改、删除属性列查找、插入、修改、删除为不同的用户定义不同的视图,可以限制各个用户的访问范围。视图是逻辑存在的,其修改操作会受到限制。定义视图手段概述实施方法学生表学生选课表学生看到的成绩单老师看到的成绩单虚拟的视图替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的字符。转换方法,该方法将明文中的字符按不同的顺序重新排列。数据加密实施方法通常将这两种方法结合起来使用,就可以达到相当高的安全程度。手段概述加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式,数据以密文的形式存储和传输。数据审计手段概述审计功能是一种监视措施,它跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在一个特殊文件中,即审计日志中。操作类型(如修改、查询等),操作终端标识与操作者标识,操作日期和时间,操作所涉及到的相关数据(如基本表、视图、记录、属性等),数据的前象和后象等。记录的内容一般包括:SQLServer数据安全性机制三层安全结构结合安全性模式以及安全性控制手段,SQLServer使用了2层结构的数据库安全机制,表现为:用户提供标识服务器数据库及其管理系统具体数据库及其对象级别安全性表和视图总结总结安全性控制的一般方法用户标识与鉴定用户存取权限控制定义视图数据加密数据审计SQLServer数据安全机制服务器级别的安全性具体数据库及其对象的安全性SQLServer具体数据库级安全管理数据库用户账号的相关操作数据库角色用户权限管理总结CONTENTS主要内容数据库用户账号的相关操作用户账号要在特定的数据库内创建,并关联一个登录账号(当一个数据库的用户创建时,必须关联一个登录账号)。每个登录账号在一个数据库中只能有一个用户账号,但每个登录账号可以在不同的数据库中各有一个用户账号。数据库用户账号登录账号用户账号用户账号用户账号创建账户的方式使用‘对象资源管理器’使用SQL语句创建数据库用户账号1.打开‘对象资源管理器’2.开展要创建用户的数据库3.找到其下的‘安全性’节点创建数据库用户账号使用‘对象资源管理器’4.右键点击出现的用户文件夹1.右键‘用户’文件夹2.点击‘新建用户’3.添加‘常规选项卡’中信息创建数据库用户账号使用‘对象资源管理器’登录名:对应的登录账号默认架构:该用户所属架构拥有的架构查看和设置该用户拥有的架构。创建数据库用户账号使用‘对象资源管理器’使用用户映射查看数据库用户账号和登录账号的绑定关系。创建数据库用户账号使用‘对象资源管理器’user_name:数据库用户名。login_name:登录用户名。创建数据库用户账号使用语句创建CreateUseruser_name

[{For|From}{Loginlogin_name|Certificatecert_name|AsymmetricKeyasym_key_name}|WithoutLogin]和创建用户的方法类似,找到数据库下的‘安全’文件夹节点。在文件夹下找到所要修改的用户。右键该用户,选择属性,则可以按照对话框修改用户信息。修改步骤如下:修改和删除数据库用户账号和创建用户的方法类似,找到数据库下的‘安全’文件夹节点。在文件夹下找到所要删除的用户。右键该用户,选择删除对象,则可以删除用户信息。删除步骤如下:修改和删除数据库用户账号数据库角色数据库角色概述角色名称权限public最基本的数据库角色db_accessadmin可以添加或删除用户标识db_backupoperator可以发出DBCC、CHECKPOINT和BACKUP语句db_datareader可以选择(取)数据库内任何用户表中的所有数据db_datawriter可以更改数据库内任何用户表中的所有数据db_ddladmin可以发出所有DDL语句,但不能发出GRANT(授权)、REVOKE或DENY语句db_denydatareader不能选择(取)数据库内任何用户表中的任何数据db_denydatawriter不能更改数据库内任何用户表中的任何数据db_owner在数据库中有全部权限db_securityadmin

可以管理全部权限、对象所有权、角色和角色成员资格用户权限管理权限管理分类用户对数据库的权限操作系统权限对象权限用户权限管理分类创建数据库、数据表、存储过程等。用户对特定数据库对象操作对表和视图的操作总结数据库安全知识点总结创建用户的方式修改用户的方式删除用户的方式用户权限管理数据库完整性含义、描述方式及分类方式数据库完整性含义数据库完整性的描述方式数据库完整性约束的分类总结本章目录CONTENTS数据库完整性的含义数据库完整性的定义确保数据库中的数据数据库的完整性数据的正确性数据的有效性数据的相容性数据库完整性的定义防止合法用户使用数据库时向数据库中加入不符合语义的数据。完整性措施的防范对象是不合语义的数据。在安全性的基础上,完整性可以理解为:数据库完整性的描述方式使用规则描述数据库完整性的方法违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。WHEN约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。触发条件:规定系统什么时候使用规则来检查数据。ConditionWhat描述完整性的3个部分规则的执行时间立即执行:在执行多个语句构成的事务时,执行完用户事务的一条语句后,系统立即对数据进行完整性条件检查。延迟执行:执行完事务的所有语句后,系统才数据进行完整性条件检查。规则的执行时间完整性的形式化描述一条完整性可以用一个五元组(D,O,A,C,P)来形式化地表示代表约束作用的数据对象。可以是关系、元组和列三种对象;D(Data):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行;O(Operation)代表数据对象必须满足的语义约束,这是规则的主体;A(Assertion)完整性的形式化描述代表选择A作用的数据对象值的谓词;C(Condition)代表违反完整性规则时触发执行的操作过程。P(Procedure)完整性的形式化举例例如,对于“学号(SNo)不能为空”的这条完整性约束中,D、O、A、C、P的含义分别如下:D:代表约束作用的数据对象为SNo属性;O:当用户插入或修改数据时需要检查该完整性规则;A:SNo不能为空;C:A可作用于所有记录的SNo属性;P:拒绝执行用户请求。数据库完整性约束的分类数据库完整性约束的分类根据约束条件:值的约束和结构的约束(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。例如:规定学生的姓名数据类型为字符型,长度为8值的约束即对数据类型、数据格式、取值范围和空值等进行规定数据库完整性约束的分类(2)对数据格式的约束。例如:规定出生日期的格式为YY.MM.DD(3)对取值范围的约束。例如:月份的取值范围为1~12(4)对空值的约束,空值表示未定义或者未知数值。例如,在SC关系中,学号和课程号不可以为空。数据库完整性约束的分类结构的约束即对数据之间联系的约束(1)函数依赖约束。例如:2NF,3NF和BCNF需要满足的函数依赖。(2)实体完整性约束。例如:在学生关系中,主码学号不能为空。(3)参照完整性约束。例如:在学生关系中,外码系别的约束。(4)统计约束。例如:规定某一个的数值不得高于这一列的平均值等。数据库完整性约束的分类根据约束状态:静态约束和动态约束静态约束是指对数据库每一个确定状态所应满足的约束条件,是反映数据库状态合理性的约束,这是最重要的一类完整性约束。值的约束和结构的约束均属于静态约束。静态约束数据库完整性约束的分类根据约束状态:静态约束和动态约束动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。动态约束总结知识点总结含义描述方式形式化表达分类触发条件约束条件违约条件D,O,A,C,P值和结构静态和动态数据库完整性数据库完整性的实施规则默认总结本章目录CONTENTS规则使用规则进行数据库完整性控制规则(Rule)就是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。规则与其作用的表或用户自定义数据类型是相互独立的,即表或用户自定义对象的删除、修改不会对与之相连的规则产生影响。规则和约束可以同时使用,表的列可以有一个规则及多个check约束。规则的使用步骤创建规则将规则绑定到数据库的对象上,或者将规则从数据库的对象上松绑。CREATERULErule_nameAScondition_expression创建规则规则的使用步骤CREATERULEage_ruleAS@age>=18and@age<=50【例】创建学生年龄规则规则的使用步骤创建规则将规则绑定到数据库的对象上,或者将规则从数据库的对象上松绑。创建规则后,规则仅仅是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型。解除规则与对象的绑定称为“松绑”。绑定规则和松绑规则的方法sp_bindrule[@rulename=]'rule',[@objname=]'object_name'[,'futureonly’][例]绑定规则age_rule到S表的字段Age。EXECsp_bindrule'age_rule','S.Age‘用存储过程sp_bindrule绑定规则规则对已经输入表中的数据不起作用。绑定规则和松绑规则的方法用存储过程sp_unbindrule松绑规则的绑定sp_unbindrule[@objname=]'object_name'[,'futureonly'][例]解除已绑定到S表的字段Age的规则age_rule。EXECsp_unbindrule'S.Age'删除规则的方法删除规则使用DROPRULE命令删除规则DROPRULE{rule_name}[,...n][例]删除age_rule规则。DROPRULEage_rule在删除一个规则前必须先将与其绑定的对象解除绑定。默认默认的定义及创建方法默认(Default)是向用户输入记录时没有指定具体数据的列中自动插入的数据。表的一列或一个用户自定义数据类型只能与一个默认绑定。默认的定义及创建方法创建默认绑定默认到数据库中的对象默认的使用步骤默认的定义及创建方法创建默认CREATEDEFAULTdefault_nameASconstant_expression[例]创建出生日期默认birthday_defa。CREATEDEFAULTbirthday_defaAS'1978-1-1'默认的查看、绑定和松绑使用sp_helptext存储过程可以查看默认的信息。[例]查看默认birthday_defa。EXECsp_helptextbirthday_defa查看默认默认的查看、绑定和松绑默认的绑定与松绑用存储过程sp_bindefault绑定默认sp_bindefault[@defname=]'default', [@objname=]'object_name' [,'futureonly']用存储过程sp_unbindefault解除默认的绑定sp_unbindefault[@objname=]'object_name'[,'futureonly']默认的绑定和松绑的举例、删除默认[例]绑定默认birthday_defa到数据表S的Birthday列上。EXECsp_bindefaultbirthday_defa,‘S.[Birthday]’[例]解除默认birthday_defa与表S的Birthday列的绑定EXECsp_unbindefault‘S.[Birthday]’默认的绑定和松绑的举例、删除默认使用DROPDEFAULT命令删除默认DROPDEFAULT{default_name}[,…n][例5-21]删除学生生日默认birthday_defa.DROPDEFGAULTbirthday_defa删除默认在删除一个默认前必须先将与其绑定的对象解除绑定总结知识点总结数据库完整性的实施使用规则使用默认数据库并发性的含义事务及其特性并发操作带来的不一致性封锁协议本章目录CONTENTS总结数据库并发性的含义多个用户同时访问数据库,如果对并发操作不加控制可能会产生不正确的数据,破坏数据的完整性。并发控制就是解决这类问题,以保持数据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式给用户提供数据。数据库并发性的含义事务及其特性事务的开始事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。事务(Transaction)定义事务的语句有三条:BEGINTRANSACTION事务的提交COMMIT事务的回滚ROLLBACK持久性指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(NothingorAll)的原则,即不允许完成部分的事务。事务(Transaction)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)并发操作带来的不一致性举例说明不一致问题的产生过程并发取款操作。假设存款余额R=1000元,甲事务T1取走存款100元,乙事务T2取走存款200元,如果正常操作,即甲事务T1执行完毕再执行乙事务T2,存款余额更新后应该是700元。但是如果按照如下顺序操作,则会有不同的结果:例:举例说明不一致问题的产生过程结果两个事务共取走存款300元,而数据库中的存款却只少了200元。得到这种错误的结果是由甲乙两个事务并发操作引起的。甲事务T1读取存款余额R=1000元;01乙事务T2读取存款余额R=1000元;02甲事务T1取走存款100元,修改存款余额R=R-100=900,把R=900写回到数据库;03乙事务T2取走存款200元,修改存款余额R=R-200=800,把R=800写回到数据库;04引起数据不一致性的主要问题数据库的并发操作导致的数据库不一致性主要有以下三种:丢失更新(LostUpdate)污读(DirtyRead)不可重读(UnrepeatableRead)引起数据不一致性的主要问题数据库的并发操作导致的数据库不一致性主要有以下三种:丢失更新(LostUpdate)时

间事务T1数据库中R的值事务T2t0

1000

t1FINDR

t2

FINDRt3R=R-100

t4

R=R-200t5UPDATER

t6

900UPDATERt7

800

当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。引起数据不一致性的主要问题数据库的并发操作导致的数据库不一致性主要有以下三种:污读(DirtyRead)时

间事务T1数据库中R的值事务T2t0

1000

t1FINDR

t2R=R-100

t3UPDATER

t4

900FINDRt5ROLLBACK

t6

1000事务T1更新了数据R,事务T2读取了更新后的数据R,事务T1由于某种原因被撤销,修改无效,数据R恢复原值。事务T2得到的数据与数据库的内容不一致,这种情况称为“污读”。引起数据不一致性的主要问题数据库的并发操作导致的数据库不一致性主要有以下三种:不可重读(UnrepeatableRead)时

间事务T1数据库中R的值事务T2t0

1000

t1FINDR

t2

FINDRt3

R=R-200

t4

UPDATERt5

800

事务T1读取了数据R,事务T2读取并更新了数据R,当事务T1再读取数据R以进行核对时,得到的两次读取值不一致,这种情况称为“不可重读”。封锁协议封锁分类所谓封锁就是当一个事务在对某个数据对象(可以是数据项、记录、数据集以至整个数据库)进行操作之前,必须获得相应的锁,以保证数据操作的正确性和一致性。封锁的定义封锁(Lock)技术和时标(Timestamping)技术,重点介绍封锁技术。实现并发控制的方法主要有两种:封锁分类基本的封锁类型有两种排它型封锁又称写封锁,简称为X封锁,它采用的原理是禁止并发操作。排它型封锁(ExclusiveLock)共享封锁又称读封锁,简称为S锁,它采用的原理是允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改。共享封锁(ShareLock)封锁可以保证合理地进行并发控制,保证数据的一致性。在封锁时,要考虑一定的封锁规则,例如,何时开始封锁、封锁多长时间、何时释放等,这些封锁规则称为封锁协议。封锁协议的定义(LockProtocol)使用封锁协议的过程使用封锁协议的过程通过三级封锁协议在不同程度上给予解决:一级封锁协议二级封锁协议三级封锁协议使用封锁协议的过程事务T在修改数据对象之前必须对其加X锁,直到事务结束。一级封锁协议时

间事务T1数据库中R的值事务T2t0

XLOCKR1000

t1FINDR

t2

XLOCKRt3R=R-100

WAITt4UPDATER

WAITt5UNLOCKX900WAITt6

XLOCKRt7

R=R−200

t8UPDATERt9700UNLOCKX使用封锁协议的过程在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后释放S锁。二级封锁协议时

间事务T1数据库中R的值事务T2t0

XLOCKR1000

t1FINDR

t2

R=R-100

t3UPDATER

t4900SLOCKRt5ROLLBACKWAITt6UNLOCKX1000SLOCKRt7

FINDRt8UNLOCKS使用封锁协议的过程在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后并不释放S锁,而直到事务T结束才释放。三级封锁协议时

间事务T1数据库中R的值事务T2t01000

t1SLOCKR

t2FINDR

t3

XLOCKRt4COMMIT

WAITt5UNLOCKSWAITt6

XLOCKRt7

FINDRt8R=R−200t9UPDATERt10800UNLOCKX封锁粒度封锁粒度指封锁的单位。根据对数据的不同处理,封锁的对象可以是这样一些逻辑单元:字段、记录、表、数据库等,封锁的数据对象的大小叫封锁粒度。封锁粒度的含义封锁粒度封锁粒度越小,系统中能够被封锁的对象就越多,并发度越高,但封锁机构复杂,系统开销也就越大。封锁粒度越大,系统中能够被封锁的对象就越少,并发度越低,封锁机构越简单,相应系统开销也就越小。死锁和活锁封锁所产生的额问题当某个事务请求对某一数据进行排它性封锁时,由于其他事务对该数据的操作而使这个事务处于永久等待状态,这种状态称为活锁。活锁(Livelock)时

间事务T1事务T2事务T3事务T4t0LOCKR

t1

LOCKR

t2

WAITLOCKR

t3UNLOCKWAITWAITLOCKRt4

WAITLOCKRWAITt5

WAIT

WAITt6

WAITUNLOCKWAITt7

WAIT

LOCKRt8

WAIT

死锁和活锁封锁所产生的额问题在同时处于等待状态的两个或多个事务中,其中的每一个在它能够进行之前,都等待着某个数据,而这个数据已被它们中的某个事务所封锁,这种状态称为死锁。死锁(Deadlock)时

间事务T1事务T2t0LOCKR1

t1

LOCKR2t2

t3LOCKR1t4WAITt5WAITLOCKR1t6WAITWAITt7WAITWAIT解决封锁的方法死锁的预防一次性对所有资源加锁,如果有一个资源无法加锁,则等待。一次加锁法:规定资源的序号,按序号加锁顺序加锁法:解决封锁的方法死锁的预防如果在事务依赖图中沿着箭头方向存在一个循环,那么死锁的条件就形成了,系统就会出现死锁。选择一个处理死锁代价最小的事

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论