亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        三類數(shù)據(jù)庫(kù)事務(wù)并發(fā)控制方法的實(shí)現(xiàn)及比較

        2008-12-31 00:00:00陽(yáng)曉霞
        考試周刊 2008年21期

        摘要: 在多用戶的數(shù)據(jù)庫(kù)系統(tǒng)中,由于事務(wù)的并發(fā)性而帶來(lái)了三類的并發(fā)問題。為解決這些問題,本文介紹了三種事務(wù)的并發(fā)控制方法:封鎖法、時(shí)間印法和樂觀法,并分析了它們的優(yōu)缺點(diǎn)。

        關(guān)鍵詞: 并發(fā)控制 封鎖 時(shí)間印 樂觀

        1.引言

        在數(shù)據(jù)庫(kù)環(huán)境中,事務(wù)是一個(gè)十分重要的概念。一個(gè)事務(wù)是由一系列的對(duì)數(shù)據(jù)庫(kù)的查詢操作和更新操作構(gòu)成的。這些操作是一個(gè)整體,不能分割,即要么所有的操作都順利完成,要么一個(gè)也不要做。絕不能只完成了部分操作,而還有一些操作沒有完成。

        而事務(wù)的并發(fā)控制則是通過(guò)調(diào)度來(lái)確保事務(wù)的并發(fā)執(zhí)行的效果等同于沒有并發(fā)執(zhí)行時(shí)的執(zhí)行效果,也就是使事務(wù)的并發(fā)執(zhí)行調(diào)度等價(jià)于事務(wù)的某個(gè)可串行化調(diào)度,從而確保數(shù)據(jù)庫(kù)的一致性,其作用是正確協(xié)調(diào)同一時(shí)間里多個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)的并發(fā)操作,解決資源競(jìng)爭(zhēng)問題以保證數(shù)據(jù)庫(kù)的一致性和完整性。

        2.三類并發(fā)問題

        并發(fā)是多個(gè)事務(wù)同時(shí)存取數(shù)據(jù)庫(kù)同一數(shù)據(jù)時(shí)可能會(huì)導(dǎo)致數(shù)據(jù)存取不一致,數(shù)據(jù)不真實(shí)的現(xiàn)象。并發(fā)將引起數(shù)據(jù)爭(zhēng)用,可導(dǎo)致丟失更新、讀臟數(shù)據(jù)、不可重復(fù)讀三類錯(cuò)誤,破壞數(shù)據(jù)的一致性。(如表一所示)

        2.1丟失更新:當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行,然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問題。每個(gè)事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。(如表二所示)

        2.2讀臟數(shù)據(jù):當(dāng)?shù)诙€(gè)事務(wù)選擇其它事務(wù)正在更新的行時(shí),第二個(gè)事務(wù)正在讀取的數(shù)據(jù)還沒有確認(rèn),并且可能由更新此行的事務(wù)所更改。

        2.3不可重復(fù)讀:當(dāng)?shù)诙€(gè)事務(wù)多次訪問同一行而且每次讀取不同的數(shù)據(jù)時(shí),稱為不可重復(fù)讀錯(cuò)誤。不可重復(fù)讀錯(cuò)誤產(chǎn)生的原因是其它事務(wù)在此期間更改了第二個(gè)事務(wù)正在讀取的數(shù)據(jù)。(如表三所示)

        3.三類并發(fā)控制方法

        在多用戶環(huán)境下,多個(gè)用戶可能同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。假設(shè)在某一時(shí)間段內(nèi)有多個(gè)事務(wù)同時(shí)在進(jìn)行,且它們(或其中的一部分)操作了相同的數(shù)據(jù),若沒有采用任何并發(fā)控制手段,就可能出現(xiàn)前文所說(shuō)的數(shù)據(jù)錯(cuò)誤。要避免這樣的錯(cuò)誤,就必須采用并發(fā)控制方法。下面具體介紹三類并發(fā)控制方法。

        3.1封鎖并發(fā)控制方法

        封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。所謂封鎖就是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象如數(shù)據(jù)庫(kù)、表、數(shù)據(jù)塊、記錄和數(shù)據(jù)項(xiàng)等操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖,加鎖成功后,事務(wù)T才可以對(duì)該數(shù)據(jù)進(jìn)行操作,操作完成后,在某個(gè)時(shí)刻,事務(wù)T要釋放鎖。

        最常用的有兩種鎖:排它鎖(Exclusive Locks,X鎖)和共享鎖(Share Locks,S鎖)。

        排它鎖又稱為寫鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其他任何事務(wù)都不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。

        共享鎖又稱讀鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對(duì)A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對(duì)A做任何修改。

        在運(yùn)用X鎖和S鎖這兩種基本封鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),還需要約定一些規(guī)則,如何時(shí)申請(qǐng)X鎖或S鎖,持鎖時(shí)間和何時(shí)釋放等。這些規(guī)則構(gòu)成封鎖協(xié)議(Locking Protocol)。對(duì)應(yīng)前面分析的并發(fā)操作問題,可以用以下三級(jí)協(xié)議解決:一級(jí)封鎖協(xié)議:事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X鎖,直到事務(wù)結(jié)束才釋放。一級(jí)封鎖協(xié)議可以解決“丟失修改”的問題。二級(jí)封鎖協(xié)議:采用一級(jí)封鎖協(xié)議后,若事件T在讀取同一數(shù)據(jù)必須先對(duì)其加S鎖,讀完后即可釋放S鎖。二級(jí)封鎖協(xié)議可以解決“讀臟數(shù)據(jù)”的問題。三級(jí)封鎖協(xié)議:采用一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖。直到事務(wù)結(jié)束才釋放。三級(jí)封鎖協(xié)議可以解決“不可重復(fù)讀”的問題。

        兩段封鎖協(xié)議(Two-phase Locking)也是一種最常用的封鎖協(xié)議,理論上已經(jīng)證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調(diào)度。其主要內(nèi)容是:

        (1)在對(duì)任何數(shù)據(jù)進(jìn)行讀寫之前,事務(wù)首先要獲得對(duì)該數(shù)據(jù)的封鎖。

        (2)在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其它封鎖。

        即事務(wù)分為兩個(gè)階段:

        (1)生長(zhǎng)階段:獲得封鎖。

        (2)收縮階段:釋放封鎖。

        兩段封鎖法的策略有兩個(gè)主要的優(yōu)點(diǎn):

        (1)一個(gè)事務(wù)總是讀由另一個(gè)已提交的事務(wù)寫入的值,因此不會(huì)因?yàn)橐粋€(gè)事務(wù)的計(jì)算是基于它本不應(yīng)該看到的文件而中止它。

        (2)所有鎖的請(qǐng)求與釋放都可以由系統(tǒng)來(lái)處理而無(wú)須事務(wù)關(guān)心:只要訪問一個(gè)文件就可以請(qǐng)求一個(gè)鎖,當(dāng)事務(wù)結(jié)束時(shí)就可以釋放一個(gè)鎖。

        3.2時(shí)間印并發(fā)控制方法

        所謂時(shí)間印法就是在每個(gè)事務(wù)啟動(dòng)運(yùn)行時(shí),并發(fā)控制機(jī)制賦予其惟一一個(gè)時(shí)間印(通常為事務(wù)的啟動(dòng)時(shí)間),以實(shí)現(xiàn)多事務(wù)的可串行性。后繼事務(wù)有較大的時(shí)間印,事務(wù)的時(shí)間印一直保持到事務(wù)結(jié)束。

        此外,每個(gè)數(shù)據(jù)實(shí)體都有時(shí)間印,分為讀時(shí)間印和寫時(shí)間印。讀時(shí)間印即數(shù)據(jù)上一次被讀出的時(shí)間,寫時(shí)間印即數(shù)據(jù)最近被寫入的時(shí)間。只有當(dāng)時(shí)間印比數(shù)據(jù)項(xiàng)上的時(shí)間印大或者相當(dāng)?shù)氖聞?wù)才能執(zhí)行對(duì)數(shù)據(jù)的操作,并在操作完成后置數(shù)據(jù)項(xiàng)的時(shí)間印為事務(wù)和數(shù)據(jù)項(xiàng)時(shí)間印的最大值,否則拒絕令操作重啟。這種方法使事務(wù)的并行等價(jià)于特定的串行序列,即按時(shí)間印遞增的序列,一般不會(huì)產(chǎn)生死鎖。

        采用時(shí)間印的并行控制算法主要有兩種:基本時(shí)間印法和保守時(shí)間印法。在基本時(shí)間印法中,一旦發(fā)現(xiàn)沖突,不是等待而是重啟事務(wù),因而不會(huì)發(fā)生死鎖,這是它的最大優(yōu)點(diǎn)。但這一優(yōu)點(diǎn)是以重啟事務(wù)為代價(jià)的,為避免事務(wù)重啟次數(shù)過(guò)多,又提出了保守時(shí)間印法和樂觀的并發(fā)控制法等改進(jìn)方法。

        保守時(shí)間印法的基本思想是不拒絕任何操作,因而不必重啟事務(wù),如果操作不能執(zhí)行則緩沖較年輕事務(wù)的操作直到所有較老的操作執(zhí)行為止。此時(shí),系統(tǒng)需要知道什么時(shí)候不再有較老的操作存在,而且緩沖事務(wù)的操作可能會(huì)造成較老事務(wù)等待較年輕事務(wù)的情況而造成死鎖,實(shí)現(xiàn)起來(lái)比較困難。

        同封鎖法相比,時(shí)間印法有著不同的特性:

        (1)當(dāng)一個(gè)事務(wù)碰到了更大(晚)的時(shí)間印時(shí),就要中止。

        (2)封鎖法在相同的情況下要么等待,要么立即執(zhí)行。

        (3)另一方面,時(shí)間印法不會(huì)出現(xiàn)死鎖,這是極大的改進(jìn)。

        3.3樂觀并發(fā)控制法

        樂觀的并發(fā)控制法是基于事務(wù)間的沖突操作很少,因此事務(wù)的執(zhí)行可以不考慮沖突。但為解決沖突寫操作,需將其暫時(shí)保存,待事務(wù)結(jié)束后由專門的機(jī)構(gòu)檢測(cè)是否可以將數(shù)據(jù)寫到數(shù)據(jù)庫(kù)中,若不能則重啟該事務(wù)。

        樂觀并發(fā)控制法的思想驚人的簡(jiǎn)單:盡管放心去做你想做的,不用在意其他人正在做什么。如果有問題出現(xiàn),那么以后再考慮吧。在實(shí)際情況中,沖突相對(duì)來(lái)說(shuō)非常少,所以這個(gè)策略大部分時(shí)間都可以正常工作。

        樂觀并發(fā)控制算法最適合于基于私有工作空間的情況,每個(gè)事務(wù)都獨(dú)立地修改各自的文件,不會(huì)涉及其他的事務(wù)。在結(jié)束的時(shí)候,新的文件要么被提交要么被釋放。

        樂觀并發(fā)控制算法的最大優(yōu)點(diǎn)在于:避免了死鎖,而且允許最大的并行度(進(jìn)程不需要去等待一個(gè)鎖)。它的缺點(diǎn)是有時(shí)可能會(huì)失效,這時(shí)所有事務(wù)都必須退回重新運(yùn)行;在重負(fù)載的情況下,算法失效的可能性將會(huì)直線上升,這使得樂觀并發(fā)控制算法成了一個(gè)很糟糕的選擇。

        4. 總結(jié)

        三類并發(fā)控制方法各有自己的優(yōu)缺點(diǎn),在不同的領(lǐng)域有自己的應(yīng)用范圍。在很多時(shí)候,我們還可以綜合考慮兩種并發(fā)控制方法,將其中的兩類并發(fā)控制方法結(jié)合起來(lái),組成一種新的并發(fā)控制方法,以適應(yīng)需要。

        參考文獻(xiàn):

        [1]王珊,李盛恩.數(shù)據(jù)庫(kù)基礎(chǔ)應(yīng)用.北京:人民郵電出版社,2002.8.

        [2]涂振宇,曾碹.數(shù)據(jù)庫(kù)并發(fā)訪問機(jī)制研究.江西教育學(xué)院學(xué)報(bào),2006.6:23-24.

        中文字字幕在线中文乱码解| 久久精品国产热| 爱v天堂在线观看| 国产精品久久婷婷六月丁香| 亚洲av中文无码字幕色本草| 国产福利酱国产一区二区| 99精品国产兔费观看久久| 精品午夜中文字幕熟女| 青青手机在线观看视频| 欧美另类高清zo欧美| 亚州精品无码人妻久久| 人妻精品久久久一区二区| 丰满人妻一区二区三区视频| 无码少妇一区二区浪潮av| 国产亚洲欧洲AⅤ综合一区| 美女射精视频在线观看| 亚洲成av人片乱码色午夜| 久久久久亚洲av无码专区导航 | 九九久久精品大片| 蕾丝女同一区二区三区| 一区二区三区视频| 自拍偷自拍亚洲精品播放| 日韩精品免费在线视频| 一区在线视频免费播放| 国内露脸少妇精品视频| 亚洲AV无码成人精品区网页| 精品人妻午夜中文字幕av四季| 欧美黑人又粗又大xxxx| 正在播放国产对白孕妇作爱| 丰满少妇人妻无码超清 | 婷婷色婷婷开心五月四| 久久不见久久见免费影院www| 精品国产亚欧无码久久久| 中国黄色偷拍视频二区| 亚洲无线一二三四区手机| 精品一品国产午夜福利视频| 亚洲女同精品久久女同| 99人中文字幕亚洲区三| a级毛片成人网站免费看 | 日韩av高清无码| 厕所极品偷拍一区二区三区视频 |