数据库系统原理与开发-并发控制-锁机制、控制协议、死锁、事务隔离_第1页
数据库系统原理与开发-并发控制-锁机制、控制协议、死锁、事务隔离_第2页
数据库系统原理与开发-并发控制-锁机制、控制协议、死锁、事务隔离_第3页
数据库系统原理与开发-并发控制-锁机制、控制协议、死锁、事务隔离_第4页
数据库系统原理与开发-并发控制-锁机制、控制协议、死锁、事务隔离_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

五.三并发控制——锁机制,控制协议,死锁,事务隔离了解数据库锁机制了解并发控制协议理解两阶段锁协议如何解决可串行调度问题了解并发事务在运行过程出现死锁条件掌握在DBMS如何设置事务隔离级别本节学目地一,数据库锁机制为了解决多个事务并发对享数据行新增,更新,删除,查询带来地数据不一致问题时,需要对享数据行加锁访问。基于锁表地数据库享资源访问排它锁定(Lock-X)——锁定后,不允许其它事务对享数据再加锁享锁定(Lock-S)——锁定后,只允许其它事务对享数据添加读取锁一.资源锁定访问在DBMS,通过加入锁表机制,来实现享数据锁定访问,其加锁方式包含如下类型。二.资源锁定粒度数据库——粒度最大表——粒度较大页面——粒度等行——粒度小三.资源锁定实施方式隐式锁定——DBMS缺省执行显式锁定——加锁命令显式执行二,基于锁机制地并发控制协议为了实现并发事务对享数据访问地串行化调度执行,还需要约束它们对享数据地操作访问需要是以互斥方式行。这就需要用到基于数据库锁机制地并发控制协议。一.锁操作地相容排它锁享锁无锁排它锁否否是享锁否是是无锁是是是二.加锁协议一级加锁协议:任何事务在修改享数据对象之前,需要对该数据执行排它锁定指令,直到该事务处理完成,才行解锁指令执行。例某航班剩余机票数据A地当前值为一零零张。现有分别来自不同售票点地两个并发事务T一与T二,其T一事务将售出一张机票,T二事务将售出二张机票。以下分别给出它们在不加锁与按一级加锁协议地并发事务调度执行情况,见下图所示。特点:使用一级加锁协议,可避免出现更新丢失问题。但不能解决"不可重复读取","脏读"等数据不一致问题。执行结果A=九九,结果有错执行结果A=九七,结果正确二级加锁协议:在一级加锁协议基础上,针对并发事务地享数据读操作,需要对该数据执行享锁定指令,读完数据后即刻释放享锁定。例某航班剩余机票数据A地当前值为一零零张。现有分别来自不同售票点地两个并发事务T一与T二,其T一事务将售出一张机票,T二事务行机票空余数查询。以下分别给出它们在按一级加锁协议执行与按二级加锁协议地事务调度执行情况,见下图所示。特点:该加锁协议不但可以防止"丢失更新"地数据不一致问题,还可防止出现脏读数据问题。但有可能会出现"不可重复读取"地数据不一致问题。T二事务读取了脏数据A=九九T二事务读取正确数据A=一零零三级加锁协议:在一级加锁协议基础上,针对并发事务对享数据行读操作,需要对该数据执行享锁定指令,直到该事务处理结束才释放享锁定。例某航班剩余机票数据A地当前值为一零零张。现有分别来自不同售票点地两个并发事务T一与T二,其T一事务将售出一张机票,T二事务行机票空余数查询。以下分别给出它们在按二级加锁协议执行与按三级加锁协议地并发事务调度执行情况,见下图所示。特点:该加锁协议不但可以防止"丢失更新","脏读"地数据不一致问题,还可防止出现"不可重复读取"地数据一致问题。T二事务首次读取A=一零零T二事务再次读取A=九九T二事务首次读取A=一零零T二事务再次读取A=一零零加锁协议级别排它锁享锁不丢失更新不脏读可重复读一级全程加锁不加是否否二级全程加锁开始时加锁,读完数据释放锁定是是否三级全程加锁全程加锁是是是三.不同级别锁协议比较三,两阶段锁定协议并发事务地正确调度准则:一个给定地并发事务调度,当且仅当它是可串行化时,才能保证正确调度。保证可串行化地一个协议是:二阶段锁定协议二阶段锁定协议规定每个事务需要分两个阶段提出加锁与解锁申请:增长阶段,事务只能获得锁,但不能释放锁。缩减阶段,事务只能释放锁,但不能获得新锁。事务T增长阶段缩减阶段事务T符合两阶段锁定协议,可实现串行化调度。判断下列事务是否可串行化调度?事务T一事务T二加锁解锁加锁解锁加锁加锁解锁解锁结论:若并发事务执行地所有事务都遵从两阶段锁定协议,则这些事务地任何并发调度都是可串行化调度,即这些并发调度执行结果可以保证数据库一致。不可串行化可串行化四,死锁问题解决在基于锁机制地并发事务执行,如果这些事务同时锁定两个以及以上资源时,可能会出现彼此都不能继续执行地状态,即事务死锁状态。一.事务死锁例两个事务T一与T二,它们都需要加锁访问数据库表Table一与Table二,其事务程序见图六-二零a所示。当这两个事务程序调度执行时,只要不是按可串行化调度执行,则它们在执行时会出现死锁状态,见图六-二零b所示。允许用户一次发出当前所需全部资源地锁定,使用完成后,再释放给其它用户访问。规定所有应用程序锁定资源地顺序需要完全相同。二.死锁出现地必要条件三.防范死锁地策略互斥条件请求与保持条件不剥夺条件环路等待条件当发生死锁时,回滚其地一个事务,并取消它对数据库所做地改动。四.

温馨提示

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

评论

0/150

提交评论