东华大学计算机学院 研究生 数据库实验2(2)

2018-11-28 18:16

数据库系统实现实验报告

Two Phase Locking

让加锁的操作自动化,需要先读出未加锁事务的操作命令,如果操作命令是read,则在此命令前加上sl Xi;如果操作命令是write,则在此命令前加上xl Xi 随机数,当读到文件结尾处时,对在事务中出现的数据对象加上相应的释放锁的操作即ul Xi…。两段锁并发控制机制是整个系统中细节最多的模块,在此模块中,不仅要考虑锁表的状态,还要考虑等待序列中是否有阻塞序列,当有事务提交时,需要查看等待序列中的操作是否可以唤醒,如果可以唤醒即多个事务对同一个数据对象的锁是可兼容的,同时还要对锁表状态进行更新;如果不可唤醒,表示其他事务对同一个数据对象加的锁不可兼容,需要继续等待。另处,在所有未提交的事务中,如果这些事务均被阻塞,说明出现死锁状态,则需将程序强行退出,并提示发生死锁。为了更清楚表达两段锁并发控制机制的流程,现将其程序流程图画出,如图1所示:

4

数据库系统实现实验报告

Two Phase Locking

开始判断该命令是否是s锁命令初始化数据库状态、事务操作、兼容矩阵、锁表状态、阻塞序列和调度序列FT读取数据对象判断该命令是否是x锁命令调度是否终止判断是否需要更新锁状态T读取数据对象FT是否有事务被唤醒更新锁状态,并读取相应的操作判断是否需要更新锁状态FT判断是否该数据是否加了x锁FT更新锁状态,并读取相应的操作产生一个随机数,并且使的事务未结束,且该事务未被阻塞FFTT判断该事务是否结束且是否被阻塞不更新锁状态,读取相应的操作F将其放入阻塞序列中将其放入阻塞序列中TT根据随机数读事相应事务的操作命令F更新数据库状态,并将调度序列保存并打印判断该命令是否是commit命令T释放锁,并更新数据库状态,设置事务结束标志结束图1 两段锁并发控制机制程序流程图

判断读和写如果读的话使用sl锁,如果是写的话使用xl锁,sl是的其他线程可以继续访问,但是xl锁其他线程就不能访问,运行结果如下

5

数据库系统实现实验报告

Two Phase Locking

5、心得体会

通过这次实验,我对两阶段锁的使用有了更加深刻的认识,通过亲自用数据测试,我知道了对于一个事务的读写来说,数据的正确性有么的重要,对于数据的使用安全以及正确方面有了深刻的认识。把理论上的两阶段锁变成实际程序中的两阶段锁虽然其中有些曲折,单最后也都得到了解决,不仅锻炼了我的编写程序的能力,也让我对数据库底层的实务操作有了深刻的认识。

6


东华大学计算机学院 研究生 数据库实验2(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课堂教学中师生、生生互动关系的处理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: