欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数据库并发控制精选课件.ppt

    • 资源ID:2042816       资源大小:659.74KB        全文页数:45页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库并发控制精选课件.ppt

    数据库并发控制技术,数据库并发控制技术,10:00,A订票点读出航班目前的机票余额数,设为10张10:02,B订票点读出航班目前的机票余额数,也为10张10:05,A订票点订出6张机票,修改机票余额为10-6=4,并将4写回到数据库中10:06,B订票点订出5张机票,修改机票余额为10-5=5,并将5写回到数据库中,10:00,A订票点读出航班目前的机票余额数,设为10张,事务,事务是数据库处理的一个逻辑工作单元,它由用户定义的一个或多个访问数据库的操作组成,这些操作一般一般包括检索(读)、插入(写)、删除和修改数据。一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。如果事务中的数据库操作仅涉及数据的检索,而不更新数据库,那么这样的事务就称为只读事务;否则,称为读写事务。,事务事务是数据库处理的一个逻辑工作单元,它由用户定义的一个或,描述事务处理概念的数据库模型,一条数据库记录整个磁盘块某个记录的字段(属性)值,数据项的粒度-数据项的大小,-命名数据项的集合,描述事务处理概念的数据库模型一条数据库记录数据项的粒度-,数据库访问操作,Read_item(X):将数据库项X读取到程序变量Write_item(X):将程序变量的值写入数据库项X中,数据库访问操作Read_item(X):将数据库项X读取到程,两个事务的示例,T1read_item(X);X:=X-N;Write_item(X);Read_item(Y);Y:=Y-N;Write_item(Y),T2Read_item(X);X:=X+M;Write_item(X),两个事务的示例T1T2,事务的特性,原子性一致性隔离性持久性,事务的特性原子性,事务状态和附加操作,BEGIN_TRANSACTIONREAD或WRITEEND_TRANSACTIONCOMMIT_TRANSACTIONROLLBACK(ABORT),事务状态和附加操作BEGIN_TRANSACTION,活动,开始事务,结束事务,部分提交,提交,部分提交,失败,撤销,终止,读、写,撤销,事务执行状态的状态转换图,活动开始事务结束事务部分提交提交部分提交失败撤销终止读、写撤,调度,n个事务T1,T2,TN的调度S,是这些事务的操作的一个执行顺序。来自不同事务的操作可以在调度S中交替执行。但是,对于参与调度S的事务Ti,Ti出现在调度中S中的操作,必须与它们在Ti中出现的顺序一致,也就是说S中的操作必须是全序的。,调度n个事务T1,T2,TN的调度S,是这些事务的操作的,操作冲突的条件,属于不同的事务访问同一数据项至少有一个操作是write_item(X),操作冲突的条件属于不同的事务,并发控制的概念,数据库中的数据是可以共享的资源,因此会有很多用户同时使用数据库中的数据。也就是说,在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作需要在一定的数据上完成。当系统中同时有多个事务运行时,特别是当这些事务使用同一段数据时,彼此之间就有可能产生相互干扰。并发控制通过对并发操作进行正确的调度保证事务的ACID特性。,并发控制的概念数据库中的数据是可以共享的资源,因此会有很多用,并发控制的必要性,更新丢失暂时更新(脏读)错误求和不可重复读,并发控制的必要性更新丢失,项X的值是错误的,因为T1对它的更新丢失了,项X的值是错误的,,事务T1因故障而必须将X值改变回其旧值,但T2已经读取了X的错误值,事务T1因故障而必须将X值,T3在X减去N之后读X,而在Y加N之前读Y;因此产生了错误的求和结果,T3在X减去N之后读X,而,并发控制的加锁技术,二进制锁共享/排他锁(读/写锁),并发控制的加锁技术二进制锁,二进制锁,一个二进制锁可以有两个状态或值:已加锁和未加锁(或简化记为1和0)。每个数据项X都与一个不同的锁相关联。Lock_item(X)unlock_item(X),二进制锁一个二进制锁可以有两个状态或值:已加锁和未加锁(,图二进制锁的加锁和解锁操作,图二进制锁的加锁和解锁操作,二进制锁的实现,二进制变量LOCK关联于数据库中的每个数据项X包含三个字段的记录队列存放等待访问该项的事务系统维护锁表,仅存放当前已加锁的数据项的相应记录,二进制锁的实现二进制变量LOCK关联于数据库中的每个数据项X,规则,事务T在执行其任何read_item(X)或write_item(X)操作之前,必须先发出一个lock_item(X)操作事务T中所有read_item(X)和write_item(X)操作执行完之后,都必须发出一个unlock_item(X)操作,规则事务T在执行其任何read_item(X)或write_,共享/排他(读/写)锁,Read_lock(X)Write_lock(X)解锁(释放):Unlock(X),共享/排他(读/写)锁Read_lock(X),图共享/排他的加锁和解锁操作,图共享/排他的加锁和解锁操作,共享/排他锁的实现,包含四个字段的记录变量LOCK关联于数据库中的每个数据项X,存放读锁定/写锁定/未锁定相应的编码Locking_transaction中存放持有锁的一个事务或列表No_of_reads中存放当前对该数据项进行读操作的事务数量队列存放等待访问该项的事务系统维护锁表,仅存放当前已加锁的数据项的相应记录,共享/排他锁的实现包含四个字段的记录,规则,事务T在执行其任何read_item(X)操作之前,必须先发出read_lock(X)或write_lock(X)操作事务T在执行其任何write_item(X)操作之前,必须先发出write_lock(X)操作事务T中所有read_item(X)和write_item(X)操作执行完之后,都必须发出unlock(X)操作,规则事务T在执行其任何read_item(X)操作之前,必须,死锁,事务T1对数据R1封锁之后,又要求对数据R2封锁而事务T2已经获得对数据R2的封锁之后,又要求对数据R1封锁这两个事务处于互相等待状态,发生死锁,死锁事务T1对数据R1封锁之后,又要求对数据R2封锁事务T1,死锁的诊断,方法一.等待图法数据库周期性地生成事务等待关系有向图,若图中存在有向回路,则表明产生死锁,如:,死锁的诊断 方法一.等待图法,方法二.超时法,若一个事务的等待时间超过了规定的时限,则系统认为产生了死锁缺点:规定时限设置过短,则容易误判;设置过长,则不能及时处理死锁。,方法二.超时法 若一个事务的等待时间超过了规定的时限,,破除死锁方法,某些事务必须回滚以破除死锁,一般选择回滚 带来代价最小的事务,释放该事务所持有的全部锁,并撤销其对数据的修改操作。,破除死锁方法 某些事务必须回滚以破除死锁,一般选择回滚,死锁的预防,方法一.一次性封锁法 每个事务执行时,一次性对其要使用到的数据项全部加锁,否则不能继续执行(缺一不可,只要有一个锁不能加锁,则释放已经加好的锁,继续等待),例子:如果T1将R1和R2一次性全部加锁,则T2要加锁时只能等待直到T1释放锁,死锁的预防方法一.一次性封锁法例子:事务T1时间事务T21,方法二.顺序加锁法,预先对数据项规定一个加锁排序,所以加锁操作都要按顺序,释放锁时按照逆序,例子:如果规定加锁顺序先R1再R2,则T2要对R2加锁之前,需要先对R1加锁,即T2需要等待T1先释放R2再释放R1,方法二.顺序加锁法预先对数据项规定一个加锁排序,所以加锁操作,时间戳方法,基于时间戳排序的并发控制,时间戳方法基于时间戳排序的并发控制,时间戳概念,每个事物开始执行时,系统会给“他/她”分配一个时间戳,通常是基于系统时钟的。越晚启动的事务其时间戳数值越大。每个数据库项 X 也有2个时间戳:读和写:read_TS(X)=TS(T最晚读),即T最晚读为成功读取X的最晚的事务;write_TS(X)=TS(T最晚写),即T最晚写为成功写入X的最晚的事务;,时间戳概念每个事物开始执行时,系统会给“他/她”分配一个时间,时间戳排序,(1)写:当事物T1发出write_item(X)操作,需检查:a.若read_TS(X)TS(T1),或者write_TS(X)TS(T1),则拒绝write操作,撤销并回滚T1,原因:这说明某个时间戳大于T1的事物T2(比T1晚启动),在T1要写X之前,T2已经读或写了X的数据;,时间戳排序(1)写:,如果是T2先写,则T1的写操作将覆盖了较晚启动的T2的写操作,即T2写操作无效,无效,如果是T2先写,则T1的写操作将覆盖了较晚启动的T2的写,如果是T2先读,则T2读的是未经T1修改写入的数据,但实际上较晚启动的T2读的应该是T1修改后的数据。对:错:,X未经T1修改,如果是T2先读,则T2读的是未经T1修改写入的数据,但实,以上都违反了时间戳顺序。,b.若以上(a)中的条件没有发生,则执行T1的写操作,并将write_TS(X)的值设置为TS(T1).,以上都违反了时间戳顺序。,(2)读:当事务T1发出read_item(X)操作,需检查:a.若write_TS(X)TS(T1),则拒绝read操作,撤销并回滚T1,(2)读:,原因:说明在T1要读X之前,比T1晚启动的T2已经修改了X的数据,所以X已经不再是T1启动时的数据值了。对:错:,X被T2修改,X被T2修改,b.若(a)中的条件没有发生,则执行T1的读操作,并将read_TS(X)的值设置为TS(T1)和当前的read_TS(X)中的最大值。这是因为在T1读X前后,其他事务(如T2)都可以读X。,b.若(a)中的条件没有发生,则执行T1的读操作,,乐观 的并发控制方法,提取和修改检验提交和写回,乐观 的并发控制方法提取和修改,事务T将数据X从数据库中提取出来,保存在临时副本中事务T对数据X所做的所有修改都保存在临时副本中,提取和修改,事务T将数据X从数据库中提取出来,保存在临时副本中提取和修改,检验,事务执行完毕后,提交到数据库之前需要检验:IF.数据X被在T从数据库中提取出之后,又被其他事务提取且修改了,则冲突,T回滚,T的临时副本被删除。ELSE.检验通过,检验事务执行完毕后,提交到数据库之前需要检验:,检验通过,才能 提交和写回,在临时副本中修改的数据X提交成功,写回到数据库中,使数据库中的X相应地改变。事务执行结束,检验通过,才能 提交和写回,That is all,Q&A,That is allQ&A,

    注意事项

    本文(数据库并发控制精选课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开