数据库原理与应用第13章

数据库原理与应用第13章

ID:34152766

大小:112.43 KB

页数:24页

时间:2019-03-03

数据库原理与应用第13章_第1页
数据库原理与应用第13章_第2页
数据库原理与应用第13章_第3页
数据库原理与应用第13章_第4页
数据库原理与应用第13章_第5页
资源描述:

《数据库原理与应用第13章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13章多用户操作第13章多用户操作 13.1多用户简介13.2多用户FoxPro的加锁和出错处理13.3死锁的预防第13章多用户操作13.1多用户简介13.1.1数据的一致性和正确性假定,分处于两个网络工作站上的两程序甲和乙同时使用某库文件A。甲打开A库文件后,对其中的数据进行修改;乙用户打开A库文件后,只是使用其中的数据(即不进行修改操作)。第13章多用户操作再进一步假定,甲、乙两用户同时都对同一库文件A进行修改。此时,情况更复杂了。当两用户修改结束后,谁也无法确定,库文件更新的数据中,哪些是正确的,哪些是错误的;哪

2、些数据最终是仅由甲修改的,哪些数据最终是乙修改的,哪些数据是甲乙双方修改的结果。也即,在这种情况下,连数据的正确性都无法保证。加锁可以保证数据的一致性和正确性。第13章多用户操作13.1.2加锁,共享,冲突与死锁所谓加锁(Locking)就是对库文件加锁(FileLocking)。当用户甲对库文件A加锁后,其他用户都不能再使用此库文件。上述的加锁法虽然可以保证库文件数据的一致性和正确性,但却不能使多个用户同时使用同一个库文件,即破坏了共享。当用户甲要使用某库文件数据时(不修改),如果不在乎数据是否一致,他并不需要对库文件

3、A进行加锁;但若他要求数据必须一致,那么必须给库文件A加锁。第13章多用户操作加锁虽然可以保证数据的一致性和正确性,但加锁也带来了两个新问题:冲突和死锁。 冲突(Collision)。当用户甲对库文件加锁,不允许其他用户使用此库文件后,用户乙企图打开此库文件,就发生了冲突。或者,当用户甲对库文件加锁,不允许其他用户修改此库文件后,用户乙企图修改此库文件,也会发生冲突。死锁一般在多库文件操作时发生。用户甲对库文件A加锁,不允许其他用户使用,然后,准备使用库文件B的数据;但库文件B已被用户乙加锁,不允许其他用户使用,且用户乙

4、也准备使用库文件A的数据。第13章多用户操作13.2多用户FoxPro的加锁和出错处理13.2.1多用户FoxPro的加锁1.独占加锁 在打开库文件的同时,对库文件进行的加锁为独占加锁。独占加锁是最严厉的加锁。一个库文件被独占加锁后,只有加锁用户可以使用该库文件,其他用户无权打开此库文件,更谈不上修改,使用此库文件了。(1)独占加锁法。第13章多用户操作FoxPro提供了两种独占加锁的方法。①使用SETEXCLUSIVE命令,命令格式为:SETEXCLUSIVEON/OFF执行了SETEXCLUSIVEON命令后,系统将

5、处于EXCLUSIVEON状态。在此状态下,执行USE命令打开库文件时,若无特殊声明,被打开的库文件都是独占加锁的。但是,该命令执行以前,未独占打开的库文件,仍保持不独占加锁的特性(共享特性)。第13章多用户操作执行了SETEXCLUSIVEOFF命令后,系统即处于EXCLUSIVEOFF状态。在此状态下,利用USE命令打开库文件时,若无特殊声明,打开的库文件是不独占加锁的。但是,此命令执行前,已独占加锁的库文件,仍保持独占加锁的特性。观察下列程序段:SETEXCLUSIVEONSELECT1USE职工SETEXCLUS

6、IVEOFF第13章多用户操作SELECTBUSE工资上述程序若能执行成功,职工.DBF库文件独占加锁,工资 .DBF 未独占加锁(可共享)。 SETEXCLUSIVE的初始默认值为ON。②打开库文件时,声明独占加锁。利用USE命令打开库文件时,若带有子句:EXCLUSIVE则打开的库文件是独占加锁的。即使刚执行过SETEXCLUSIVEOFF命令,也是如此。第13章多用户操作例USE职工EXCLUSIVE若此命令执行成功,职工.DBF库文件就被该用户独占。③打开库文件时,声明可共享。利用USE命令打开库文件时,若带有子

7、句:SHARE则打开的库文件是可共享的。即使刚执行过SETEXCLUSIVEON命令,也是如此。第13章多用户操作(2)独占加锁的条件。只能对未被任何用户打开的库文件进行独占加锁。若一个库文件已被其他用户打开,用户再对它进行独占方式打开时,系统将拒绝执行,并给出出错提示:FileisinUSEbyanother其他用户正在使用该文件(3)只能在独占方式下执行的命令。为保证数据的正确和一致,FoxPro规定一些命令只能对独占库文件进行操作。(4)独占加锁解锁法。对于已独占打开的库文件来说,解锁的惟一方法是关闭此库文件。否则

8、,无法改变其独占状态。第13章多用户操作2.函数加锁对于已共享打开的库文件,还可用函数加锁的方法对其加锁。函数加锁的方法有两种:一种是对整个库文件的加锁;另一种是仅对个别记录的加锁。(1)函数文件加锁。(2)函数记录加锁。(3)函数加锁的特点。(4)多条记录加锁法。(5)函数加锁的解锁——UNLOCK命令。(6)函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。