專(zhuān)利名稱(chēng):涉及數(shù)據(jù)庫(kù)中事務(wù)處理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于處理一個(gè)數(shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)之間的死鎖危險(xiǎn)的方法。
眾所周知,當(dāng)處理數(shù)據(jù)庫(kù)的事務(wù)時(shí),由于一個(gè)對(duì)象被另一個(gè)事務(wù)鎖定,一個(gè)事務(wù)被拒絕對(duì)該對(duì)象進(jìn)行存取,直到鎖定對(duì)象的事務(wù)完成后,被鎖定的對(duì)象變?yōu)榭捎脼橹埂?br>
當(dāng)兩個(gè)事務(wù)每一個(gè)都對(duì)一個(gè)對(duì)象設(shè)置一個(gè)鎖,而其中另外一個(gè)事務(wù)也要求對(duì)該對(duì)象進(jìn)行存取時(shí),每個(gè)事務(wù)都必須等到存取有效而任何一個(gè)都不會(huì)釋放其對(duì)對(duì)象的鎖定,這樣就導(dǎo)致了死鎖。
可以通過(guò)不同的方法避免或防止死鎖。
眾所周知,相應(yīng)的對(duì)象至少有一個(gè)封鎖隊(duì)列或線,其中放置需要存取對(duì)象的事務(wù)。對(duì)象封鎖隊(duì)列中顯現(xiàn)出等待存取對(duì)象的事務(wù)。
該封鎖隊(duì)列可以用不同的方法來(lái)實(shí)現(xiàn),例如以序列表或散列表的形式,而且為相應(yīng)的對(duì)象分配幾個(gè)封鎖隊(duì)列,在不同的隊(duì)列中放置不同類(lèi)型的鎖。
為簡(jiǎn)化起見(jiàn),本發(fā)明的實(shí)施方案的主要部分僅包括相應(yīng)對(duì)象的一個(gè)封鎖隊(duì)列。但是本領(lǐng)域的技術(shù)人員會(huì)了解當(dāng)使用幾個(gè)封鎖隊(duì)列時(shí)本發(fā)明也可以實(shí)現(xiàn)。
通過(guò)比較不同對(duì)象的封鎖隊(duì)列,可以檢測(cè)到發(fā)生死鎖的危險(xiǎn)。這個(gè)比較包括數(shù)據(jù)庫(kù)中呈現(xiàn)在一個(gè)對(duì)象的封鎖隊(duì)列中的所有事務(wù)與呈現(xiàn)在另一個(gè)對(duì)象的封鎖隊(duì)列中的所有事務(wù)之間的比較。如果這個(gè)比較表明兩個(gè)事務(wù)需要存取兩個(gè)(或多個(gè))公共對(duì)象,則檢測(cè)到有死鎖的危險(xiǎn)。
這種情況并不意味著必定會(huì)發(fā)生死鎖,因?yàn)殛P(guān)于針對(duì)不同的對(duì)象何時(shí)將被相應(yīng)的事務(wù)所存取的不同時(shí)間特征,以及為所述的不同對(duì)象的相應(yīng)事務(wù)所設(shè)定的鎖定類(lèi)型決定了這種狀況是否會(huì)發(fā)展成死鎖。
時(shí)間特征是指一個(gè)等待時(shí)間可以取決于原因而不是一個(gè)引起死鎖的給定事務(wù),例如因?yàn)橛赏耆煌氖聞?wù)引起的一個(gè)死鎖,或因?yàn)殛?duì)列中的前面事務(wù)所占用的時(shí)間,或因?yàn)樽陨淼拇嫒≌加脠?zhí)行時(shí)間但不導(dǎo)致死鎖,這樣一個(gè)事務(wù)必須等候存取。
一種鎖定類(lèi)型能夠?qū)崿F(xiàn)如同一個(gè)純粹事務(wù)讀取的存取,這樣該事務(wù)將在對(duì)象上設(shè)置一個(gè)所謂的分立鎖定,因而對(duì)于另外事務(wù)的讀取該對(duì)象仍是可用的。
當(dāng)檢測(cè)到一個(gè)死鎖危險(xiǎn)時(shí),可以通過(guò)執(zhí)行不同的過(guò)程來(lái)避免這種危險(xiǎn)。
可以將這些過(guò)程主要分為兩組,死鎖檢測(cè)和死鎖防止。
當(dāng)檢測(cè)到死鎖時(shí),有一個(gè)初始化的過(guò)程,在中止一個(gè)所涉及的事務(wù)之前,確定死鎖在實(shí)際上是否可能發(fā)生。
檢測(cè)到一個(gè)死鎖危險(xiǎn)之后立即中止一個(gè)所涉及的事務(wù),而不用實(shí)際確定是否存在死鎖,這樣可以避免死鎖。
利用一些所熟知的不同方法可以決定允許哪些事務(wù)繼續(xù)進(jìn)行而哪些事務(wù)將被中止。通常,高優(yōu)先級(jí)的事務(wù)優(yōu)先于低優(yōu)先級(jí)的事務(wù)。
當(dāng)兩個(gè)同優(yōu)先級(jí)的事務(wù)之間發(fā)生死鎖時(shí),在可以確定哪個(gè)事務(wù)在后哪個(gè)事務(wù)在先的前提下,例如通過(guò)時(shí)間標(biāo)記,繼續(xù)先前的事務(wù)而中止后來(lái)的事務(wù)。
檢測(cè)死鎖危險(xiǎn)時(shí)本發(fā)明不依賴于所用的方法。所以本文件將不對(duì)這樣的方法的實(shí)現(xiàn)加以描述。因此,下面的描述僅是對(duì)檢測(cè)到死鎖危險(xiǎn)后如何實(shí)施進(jìn)一步的操作或過(guò)程的參考。
許多可以實(shí)現(xiàn)死鎖檢測(cè)的方法在文獻(xiàn)中都有所闡述,例如出版物EP-A2-0 433 882,US-A-5,440,743,SE-T3-0 135 173,以及IEREE計(jì)算機(jī)中的事務(wù)處理,卷37,No.11,1988年11月中由A.K.Elamgarmid和A.K.Datta發(fā)表的兩階段死鎖算法(Two-phaseDeadlock Algorithm)等。這些應(yīng)用介紹了不同的方法,不僅可以檢測(cè)到可能發(fā)生的死鎖危險(xiǎn),而且還可以檢測(cè)死鎖是否實(shí)際存在。
所有的對(duì)象在數(shù)據(jù)庫(kù)中相互之間是按照編號(hào)順序放置的,這一點(diǎn)也是眾所周知的。
通過(guò)在一個(gè)表中連續(xù)地一個(gè)接一個(gè)地放置所有的對(duì)象,來(lái)實(shí)現(xiàn)對(duì)象的編號(hào)放置,即使實(shí)際上對(duì)象可以在物理上按照另外的順序放置,但卻以連續(xù)的順序相互鏈接,例如通過(guò)一個(gè)鏈接列表實(shí)現(xiàn)鏈接。
例如,給數(shù)據(jù)庫(kù)中所有的表賦予表1,表2,表3等等不同的序號(hào)時(shí),可以認(rèn)為整個(gè)數(shù)據(jù)庫(kù)中所有的對(duì)象都是以一個(gè)相互關(guān)聯(lián)的數(shù)字順序放置的,換句話說(shuō),對(duì)象是按連續(xù)順序放置于以一定順序排列的表中。
這種數(shù)據(jù)庫(kù)的組織形式可以防止兩個(gè)事務(wù)之間的死鎖,并由此完全避免死鎖。
這種情況可以通過(guò)只允許那些活動(dòng)的或正在運(yùn)行的數(shù)據(jù)庫(kù)存取以數(shù)字順序放置的相關(guān)的對(duì)象來(lái)實(shí)現(xiàn)。如果情況如此,那么當(dāng)?shù)诙€(gè)對(duì)象在前面描述的數(shù)字順序中放置在第一個(gè)對(duì)象的前面時(shí),第一個(gè)事務(wù)絕不能鎖定第一個(gè)對(duì)象,然后“放棄”以便存取該數(shù)字順序中一個(gè)更早的對(duì)象,即已經(jīng)被第二個(gè)事務(wù)鎖定的第二個(gè)對(duì)象,按順序第二個(gè)事務(wù)需要存取第一個(gè)對(duì)象。
在這種情況下,可能會(huì)產(chǎn)生等待時(shí)間,即“標(biāo)準(zhǔn)的”鎖定而決不是死鎖。
可以注意到,如果根據(jù)前面所述在數(shù)據(jù)庫(kù)中為每個(gè)對(duì)象分配一個(gè)特定的順序,那么根據(jù)該順序來(lái)執(zhí)行的事務(wù)和不考慮該順序的事務(wù)是可以同時(shí)執(zhí)行的。為了區(qū)分這些事務(wù),那些顧及這樣一個(gè)順序列表的事務(wù)在下面被描述為“嚴(yán)格增長(zhǎng)的事務(wù)”,而那些不考慮這樣一個(gè)順序列表的事務(wù)則被認(rèn)為是“非嚴(yán)格增長(zhǎng)的事務(wù)”。
在這兩種方法的組合中,一旦一個(gè)事務(wù)是非嚴(yán)格增長(zhǎng)的事務(wù)就可能發(fā)生死鎖,但是在兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)之間決不會(huì)發(fā)生死鎖。
也應(yīng)提到對(duì)一個(gè)數(shù)據(jù)庫(kù)死鎖監(jiān)測(cè)所遇到的困難在分布的數(shù)據(jù)庫(kù)中也是特別顯著的。
讀者可以參閱M.Tamer zsu和Patrick Valduriez的分布式數(shù)據(jù)庫(kù)原理(Principles of Distributed Database),ISBN 0-13-691643-0,進(jìn)一步了解有關(guān)常規(guī)和死鎖時(shí)的數(shù)據(jù)庫(kù)處理,特別是死鎖狀況的處理的信息。
當(dāng)考慮如上面描述的早期的技術(shù)觀點(diǎn)時(shí),可以看出,要維持?jǐn)?shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)間不發(fā)生死鎖,技術(shù)問(wèn)題存在于相對(duì)于現(xiàn)有技術(shù)的情況下所需的能力,如何顯著減少監(jiān)控死鎖危險(xiǎn)所需的執(zhí)行能力。
另一個(gè)技術(shù)問(wèn)題在于對(duì)所謂的鎖定事務(wù)的分類(lèi)能力,以便能夠通過(guò)觀察有關(guān)事務(wù)的所屬類(lèi)型,很容易相互區(qū)分鎖定和非鎖定事務(wù)的組合。
另一個(gè)技術(shù)問(wèn)題是在比較不同的封鎖隊(duì)列中的事務(wù)時(shí),便于區(qū)分易于引起死鎖的事務(wù)組合與那些雖然要求存取相同的對(duì)象但不會(huì)引起死鎖的事務(wù)組合。
還有一個(gè)技術(shù)問(wèn)題當(dāng)詳細(xì)檢查一個(gè)封鎖隊(duì)列時(shí),區(qū)分那些無(wú)論與其它任何事務(wù)組合都不會(huì)引起死鎖的事務(wù)和那些與某些其它事務(wù)組合便會(huì)引起死鎖的事務(wù)。
還有一個(gè)技術(shù)問(wèn)題是當(dāng)詳細(xì)檢查一個(gè)封鎖隊(duì)列時(shí),能夠區(qū)分那些與某些其它的事務(wù)組合不會(huì)導(dǎo)致死鎖狀況的事務(wù)和那些與其它事務(wù)組合會(huì)引起死鎖的事務(wù)。
還有一個(gè)技術(shù)問(wèn)題是能夠結(jié)合相應(yīng)事務(wù)用一種簡(jiǎn)單方式檢測(cè)到引起死鎖的事務(wù)組合。
另一個(gè)技術(shù)問(wèn)題是使嚴(yán)格發(fā)展的事務(wù)和非嚴(yán)格發(fā)展的事務(wù)能夠用于同一個(gè)或同樣的數(shù)據(jù)庫(kù)中,并且在該數(shù)據(jù)庫(kù)中都要能夠區(qū)分可能引起死鎖的事務(wù)組合和不會(huì)引起死鎖狀況的事務(wù)組合,而不管這些事務(wù)是嚴(yán)格發(fā)展的還是非嚴(yán)格發(fā)展的。
另一個(gè)技術(shù)問(wèn)題是不同的分類(lèi)條款取決于對(duì)事務(wù)的注重點(diǎn),如關(guān)注于事務(wù)是讀取還是寫(xiě)入的,簡(jiǎn)單的還是復(fù)雜的,嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的等,其中著重考慮一種情況或有選擇的情況組合。
另一個(gè)技術(shù)問(wèn)題是能夠?yàn)槭聞?wù)做標(biāo)記或標(biāo)志,以使其不與其它類(lèi)型的事務(wù)混淆,這樣,鎖定事務(wù)組合可以很容易地與非鎖定事務(wù)組合相區(qū)別。
還有另一個(gè)技術(shù)問(wèn)題是能夠用一個(gè)簡(jiǎn)單有效的辦法,將一個(gè)封鎖隊(duì)列中的相應(yīng)的事務(wù)直接歸屬到相關(guān)的類(lèi)型。
為了提供一個(gè)或多個(gè)上述技術(shù)問(wèn)題的解決方案,本發(fā)明在一開(kāi)始提出一種用于處理一個(gè)數(shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)間的死鎖危險(xiǎn)的方法,該方法中,為相應(yīng)的數(shù)據(jù)庫(kù)對(duì)象分配至少一個(gè)封鎖隊(duì)列或線,其中要求存取一個(gè)對(duì)象的事務(wù)被放置在隊(duì)列中,等待前面的事務(wù)對(duì)該對(duì)象的存取。
處理過(guò)程包括詳細(xì)檢查封鎖隊(duì)列中屬于不同對(duì)象的事務(wù),表明當(dāng)?shù)谝粋€(gè)事務(wù)與第二個(gè)事務(wù)都同樣要求存取第一個(gè)和第二個(gè)對(duì)象時(shí),第一個(gè)事務(wù)是否有與第二個(gè)事務(wù)之間發(fā)生死鎖的危險(xiǎn)。
在這一方法的基礎(chǔ)上,本發(fā)明特別提出數(shù)據(jù)庫(kù)中那些活動(dòng)的或正在進(jìn)行的并且能夠與其它事務(wù)一起引起死鎖的事務(wù)具有鎖定事務(wù)的特征,數(shù)據(jù)庫(kù)中活動(dòng)的或正在進(jìn)行的事務(wù)組合被劃分為鎖定和非鎖定的組合,并且僅有檢測(cè)到的鎖定組合才會(huì)導(dǎo)致進(jìn)一步的操作。
這樣,當(dāng)檢測(cè)到一個(gè)非鎖定的組合時(shí),就數(shù)據(jù)庫(kù)而言沒(méi)有進(jìn)一步的操作要求。無(wú)需進(jìn)行包括對(duì)潛在的死鎖和后續(xù)事務(wù)的評(píng)估的執(zhí)行操作,由此減少處理死鎖危險(xiǎn)所需的執(zhí)行操作。
為了評(píng)估死鎖的危險(xiǎn),對(duì)于數(shù)據(jù)庫(kù)中的活動(dòng)事務(wù)有許多不同的分類(lèi)方法。
一種方法是將事務(wù)劃分為簡(jiǎn)單的和復(fù)雜的兩類(lèi),簡(jiǎn)單事務(wù)僅存取數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象,而復(fù)雜事務(wù)存取數(shù)據(jù)庫(kù)中的兩個(gè)或更多的對(duì)象。
在這種情況下,復(fù)雜的事務(wù)就是所謂的鎖定事務(wù),一個(gè)鎖定的組合有兩個(gè)復(fù)雜事務(wù)組成,而一個(gè)非鎖定組合是由一個(gè)單一事務(wù)和某一其它的事務(wù)組成,不管這一其它事務(wù)是簡(jiǎn)單的還是復(fù)雜的。
事務(wù)也可以劃分為寫(xiě)入和讀取事務(wù),寫(xiě)入事務(wù)即所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)寫(xiě)入事務(wù)和某一其它的事務(wù)組成,不管這一事務(wù)是寫(xiě)入的還是讀取的,而一個(gè)非鎖定組合由兩個(gè)讀取事務(wù)組成。
本發(fā)明也能夠處理一個(gè)數(shù)據(jù)庫(kù)中潛在的死鎖情況,其中在數(shù)據(jù)庫(kù)中嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)同時(shí)是活動(dòng)的或正在進(jìn)行的。
根據(jù)本發(fā)明,在這樣的數(shù)據(jù)庫(kù)中非嚴(yán)格增長(zhǎng)的事務(wù)即所謂的鎖定事務(wù),一個(gè)鎖定的組合是由非嚴(yán)格增長(zhǎng)的事務(wù)與某一其它的事務(wù)組成,不管這一其它的事務(wù)是嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的,一個(gè)非鎖定的組合由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)組成。
當(dāng)處理一個(gè)潛在的死鎖情況時(shí),依照本發(fā)明可以考慮任意因素的組合,這些因素分別是簡(jiǎn)單的和復(fù)雜的事務(wù),讀取的和寫(xiě)入的事務(wù),以及嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)。在下面對(duì)本發(fā)明的優(yōu)選實(shí)施方案的描述中,將對(duì)那些可以導(dǎo)致以及如何導(dǎo)致鎖定和非鎖定的事務(wù)組合進(jìn)行明確的闡述。
在給定的情況中,最有利的組合可能取決于本發(fā)明得以實(shí)現(xiàn)的特定的數(shù)據(jù)庫(kù)。
依照本發(fā)明,根據(jù)其所屬類(lèi)型,對(duì)數(shù)據(jù)庫(kù)中活動(dòng)的事務(wù),即正在實(shí)施中的事務(wù)加以標(biāo)記或標(biāo)志。
這一目的可以通過(guò)為相應(yīng)的事務(wù)分配所謂的鎖定標(biāo)記來(lái)實(shí)現(xiàn),該標(biāo)志用于說(shuō)明該事務(wù)與另一個(gè)事務(wù)組合是否會(huì)導(dǎo)致死鎖。
這個(gè)鎖定標(biāo)志是一些分配的位,用來(lái)顯示事務(wù)是簡(jiǎn)單的還是復(fù)雜的,讀取的還是寫(xiě)入的,嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng),以及所有符合用于有關(guān)數(shù)據(jù)庫(kù)的組合的事務(wù)。
本發(fā)明還能夠顯示在一個(gè)封鎖隊(duì)列中等待的事務(wù)的鎖定標(biāo)記,以便從該隊(duì)列中直接看出事務(wù)的所屬類(lèi)型,由此可以進(jìn)一步簡(jiǎn)化屬于不同對(duì)象的封鎖隊(duì)列的比較。
依照本發(fā)明,也可以通過(guò)為相應(yīng)的對(duì)象分配幾個(gè)封鎖隊(duì)列來(lái)顯示所屬類(lèi)型,其中相應(yīng)對(duì)象的封鎖隊(duì)列數(shù)目等于數(shù)據(jù)庫(kù)中活動(dòng)的事務(wù)的類(lèi)型數(shù)目,并且一個(gè)隊(duì)列的歸屬也表示一個(gè)事務(wù)的類(lèi)型歸屬。
本發(fā)明方法提供的優(yōu)點(diǎn)是,在針對(duì)于數(shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)間的死鎖進(jìn)行安全維護(hù)時(shí),相對(duì)于已有技術(shù)所需要的能力,能夠極大地減少處理同時(shí)進(jìn)行的事務(wù)間潛在的死鎖情況所需的能力。
本發(fā)明還能夠使嚴(yán)格增長(zhǎng)的事務(wù)和非嚴(yán)格增長(zhǎng)的事務(wù)在同一個(gè)或同樣的數(shù)據(jù)庫(kù)中同時(shí)處于活動(dòng)狀態(tài),這種組合可以使得圍繞死鎖的問(wèn)題得以非常有效地解決。
本發(fā)明方法對(duì)于分布數(shù)據(jù)庫(kù)也具有特別的優(yōu)勢(shì)。
附隨的權(quán)利要求1的特征部分闡述了本發(fā)明方法的基本特征。
下面僅通過(guò)例子和參考附圖針對(duì)發(fā)明的方法對(duì)本發(fā)明進(jìn)行詳細(xì)描述,在附圖中
圖1概要說(shuō)明第一個(gè)和第二個(gè)事務(wù)間的死鎖;圖2概要說(shuō)明在第一種狀況下與封鎖隊(duì)列相關(guān)的兩個(gè)對(duì)象;圖3a和3b分別說(shuō)明一個(gè)矩陣,借此可以生成依照第一個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖4a和4b分別說(shuō)明一個(gè)矩陣,借此可以生成依照第二個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖5a、5b和5c分別說(shuō)明一個(gè)矩陣,借此可以生成依照第三個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖6a和6b分別說(shuō)明一個(gè)矩陣,借此可以生成依照第四個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖7a、7b和7c分別說(shuō)明一個(gè)矩陣,借此可以生成依照第五個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖8a、8b和8c分別說(shuō)明一個(gè)矩陣,借此可以生成依照第六個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖9a、9b和9c分別說(shuō)明一個(gè)矩陣,借此可以生成依照第七個(gè)實(shí)施方案的鎖定和非鎖定的事務(wù)組合;圖10概要說(shuō)明一個(gè)加入了表示有關(guān)事務(wù)歸屬類(lèi)型的鎖定標(biāo)志的事務(wù);圖11-17分別概要說(shuō)明依照?qǐng)D10的鎖定標(biāo)志的不同的實(shí)施方案;圖18說(shuō)明一個(gè)根據(jù)本發(fā)明的一個(gè)封鎖隊(duì)列的例子;和圖19概要說(shuō)明一個(gè)具有多個(gè)不同封鎖隊(duì)列的對(duì)象,并顯示所體現(xiàn)的相應(yīng)封鎖隊(duì)列中等待的事務(wù)的所述類(lèi)型。
本發(fā)明優(yōu)選實(shí)施方案的詳細(xì)說(shuō)明圖1說(shuō)明了在一個(gè)公共數(shù)據(jù)庫(kù)1中兩個(gè)相互不同的事務(wù),即第一個(gè)事務(wù)T1和第二個(gè)事務(wù)T2。數(shù)據(jù)庫(kù)包括若干個(gè)不同的對(duì)象,其中圖中顯示了第一個(gè)對(duì)象01和第二個(gè)對(duì)象02。
第一個(gè)事務(wù)T1具有一個(gè)對(duì)對(duì)象01的存取,如圖中實(shí)線所示。相應(yīng)地,第二個(gè)事務(wù)T2具有一個(gè)對(duì)對(duì)象02的存取。
第一個(gè)事務(wù)T1也要求存取第二個(gè)對(duì)象02,如圖中虛線所示,而且第二個(gè)事務(wù)T2也要求存取第一個(gè)對(duì)象01,也用虛線表示。
在說(shuō)明實(shí)例中,第一個(gè)事務(wù)是一個(gè)寫(xiě)入事務(wù),或一個(gè)變更事務(wù),就是說(shuō)在對(duì)一個(gè)事務(wù)T1完成對(duì)第一個(gè)對(duì)象01的存取之前沒(méi)有其它的事務(wù)被賦予對(duì)第一個(gè)對(duì)象01的存取權(quán)。因?yàn)榈谝粋€(gè)事務(wù)是一個(gè)寫(xiě)入事務(wù),不能賦予該事務(wù)以對(duì)任何其它對(duì)象如第二個(gè)對(duì)象的存取權(quán),而某一其它的事務(wù),如第二個(gè)事務(wù)T2,可以存取該對(duì)象。所以這兩個(gè)事務(wù)T1、T2將相互等待,不能釋放鎖定。這就是一種死鎖情況。
這種情況說(shuō)明一個(gè)死鎖可以發(fā)生在兩個(gè)不同的事務(wù)間。然而,應(yīng)該提到,死鎖也可能發(fā)生在三個(gè)或更多的事務(wù)間,例如,第一個(gè)事務(wù)等待第二個(gè)事務(wù),第二個(gè)事務(wù)等待第三個(gè)事務(wù),第三個(gè)事務(wù)等待第一個(gè)事務(wù)。為簡(jiǎn)化下面的實(shí)例描述,僅對(duì)兩個(gè)不同事務(wù)間的關(guān)系和這些事務(wù)可能引起死鎖的方式加以描述。但是,本領(lǐng)域的技術(shù)人員會(huì)了解本發(fā)明如何應(yīng)用于兩個(gè)以上事務(wù)間相互鎖定的一般情況。
圖2顯示的分別是分配給封鎖隊(duì)列L1、L2的對(duì)象01、02,在隊(duì)列中所述的事務(wù)等待對(duì)對(duì)象的存取。
隊(duì)列L1包括若干不同的位置L1、L11、L12、L13、L14,其中位置L10表示事務(wù)T1此時(shí)恰好對(duì)對(duì)象01具有存取權(quán),此外,事務(wù)T2、T4、T2、T5在其它位置L11、L12、L13、L14處等待。在所描述的情況下,第二個(gè)事務(wù)T2針對(duì)對(duì)象01被列在第三個(gè)隊(duì)列位置L13處,該第二個(gè)事務(wù)此時(shí)恰好也是存取第二個(gè)對(duì)象02的事務(wù)。相應(yīng)地,針對(duì)第二個(gè)對(duì)象02第一個(gè)事務(wù)T1被顯示在封鎖隊(duì)列L2的第二個(gè)位置L22處。
第一個(gè)事務(wù)T1和第二個(gè)事務(wù)T2間的死鎖的危險(xiǎn)可以在實(shí)際導(dǎo)致死鎖的情況出現(xiàn)之前被預(yù)測(cè)到。存取兩個(gè)對(duì)象01、02的隊(duì)列L1、L2間的比較將顯示此時(shí)分別存取對(duì)象01或02的事務(wù)T1、T2也在隊(duì)列中等待對(duì)其它所述對(duì)象的存取。
隊(duì)列的比較在開(kāi)始時(shí)是將隊(duì)列L1的第一個(gè)位置L10的內(nèi)容或位于該位置的事務(wù)與屬于數(shù)據(jù)庫(kù)中所有第二個(gè)對(duì)象的封鎖隊(duì)列中各位置的內(nèi)容相比較。這種比較是連續(xù)進(jìn)行的,就數(shù)據(jù)庫(kù)而言需要一定的執(zhí)行能力。
盡管圖2中顯示的情況可能不會(huì)發(fā)展為死鎖,但是檢測(cè)到了死鎖的危險(xiǎn),并可能根據(jù)檢測(cè)到的死鎖情況進(jìn)行操作或根據(jù)現(xiàn)有的技術(shù)來(lái)避免死鎖。然而,當(dāng)檢測(cè)到死鎖危險(xiǎn)時(shí),本發(fā)明并不依賴于這種處理過(guò)程,因此本文將不對(duì)這一過(guò)程加以描述。
一個(gè)檢測(cè)到的死鎖危險(xiǎn)并不一定導(dǎo)致死鎖,因?yàn)椴荒芸隙ㄓ嘘P(guān)事務(wù)T1、T2相互之間或針對(duì)某一其它事務(wù)會(huì)鎖定對(duì)象01、02。例如,事務(wù)可能是讀取事務(wù),因而允許另一個(gè)讀取事務(wù)同時(shí)存取對(duì)象。
本發(fā)明提出一種處理一個(gè)數(shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)間死鎖危險(xiǎn)的方法,步驟包括詳細(xì)檢查第一個(gè)對(duì)象01的封鎖隊(duì)列L1,其中不同的事務(wù)T1、T3、T4、T2、T5被定位在隊(duì)列L1的位置L10、L11、L12、L13、L14。這些事務(wù)中的某一個(gè)事務(wù)與其它封鎖隊(duì)列中的其它事務(wù)組合可能導(dǎo)致死鎖。依照本發(fā)明這些事務(wù)被指定為鎖定事務(wù)。某些其它的事務(wù)絕不會(huì)一起死鎖,或參與死鎖事件。
本發(fā)明能夠顯示哪些事務(wù)與其它事務(wù)組合可以導(dǎo)致死鎖情況。
當(dāng)檢查一個(gè)封鎖隊(duì)列并檢測(cè)到一個(gè)鎖定事務(wù)時(shí),將把該事務(wù)與其它封鎖隊(duì)列中的其它事務(wù)相比較,以便估計(jì)這些事務(wù)是否共同構(gòu)成一個(gè)所謂的鎖定事務(wù)組合或非鎖定事務(wù)組合。
依照本發(fā)明,僅當(dāng)檢測(cè)到一個(gè)鎖定組合時(shí)才將引起進(jìn)一步的操作,例如根據(jù)前面在“背景技術(shù)說(shuō)明”中所描述的操作。
這一方法極大地簡(jiǎn)化死鎖危險(xiǎn)的處理,因?yàn)楫?dāng)檢測(cè)到一個(gè)鎖定事務(wù)時(shí),僅需比較幾個(gè)事務(wù),當(dāng)檢測(cè)到一個(gè)鎖定事務(wù)并且這一鎖定事務(wù)與某一其它事務(wù)形成一個(gè)鎖定組合時(shí),才開(kāi)始進(jìn)一步的操作。
一個(gè)數(shù)據(jù)庫(kù)中活動(dòng)的事務(wù)可以按不同的方式分類(lèi),就是說(shuō)這些方式表明一個(gè)事務(wù)是否可以被認(rèn)為是一個(gè)鎖定的事務(wù)。在下面的描述中,將對(duì)若干這些種類(lèi)進(jìn)行說(shuō)明,以及這些種類(lèi)的組合如何提供一個(gè)簡(jiǎn)化的比較不同封鎖隊(duì)列的過(guò)程。涉及不同種類(lèi)的事務(wù)組合將被分別劃分為鎖定的和非鎖定的組合。
在本說(shuō)明中,鎖定組合意味著這樣兩個(gè)事務(wù)的組合,即如果這兩個(gè)事務(wù)都需要存取同一個(gè)或同樣的對(duì)象,則將導(dǎo)致一個(gè)死鎖。非鎖定組合意味著如下說(shuō)明的兩個(gè)事務(wù)的組合,即如果這兩個(gè)事務(wù)都需要存取同一個(gè)或同樣的對(duì)象,也不會(huì)導(dǎo)致死鎖,即使其中一個(gè)事務(wù)是所謂的鎖定事務(wù),這一組合不需采取任何的進(jìn)一步的操作。
根據(jù)本發(fā)明的第三個(gè)實(shí)施方案,事務(wù)可以被劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT,其中簡(jiǎn)單事務(wù)AT由僅存取數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象的事務(wù)組成,而復(fù)雜事務(wù)BT由存取數(shù)據(jù)庫(kù)中的兩個(gè)或多個(gè)對(duì)象的事務(wù)組成。
從圖3中將可以看出,在該實(shí)施方案中,復(fù)雜事務(wù)BT組成所謂的鎖定事務(wù),一個(gè)鎖定組合,圖中標(biāo)號(hào)為X,由兩個(gè)復(fù)雜事務(wù)BT組成(圖3a),一個(gè)非鎖定組合,圖中標(biāo)號(hào)為“-”,由一個(gè)簡(jiǎn)單事務(wù)AT和某個(gè)其它事務(wù)組成,而不管該其它事務(wù)是簡(jiǎn)單事務(wù)AT還是復(fù)雜事務(wù)BT(圖3b)。
根據(jù)本發(fā)明的第二個(gè)實(shí)施方案,事務(wù)可以被劃分為讀取事務(wù)CT或?qū)懭胧聞?wù)DT。
很清楚,讀取事務(wù)意味著在有關(guān)對(duì)象上設(shè)置一個(gè)分立鎖定的非變更事務(wù),并由此允許其它的非變更事務(wù)同時(shí)存取該數(shù)據(jù)庫(kù),而寫(xiě)入事務(wù)意味著在有關(guān)對(duì)象上設(shè)置一個(gè)獨(dú)占鎖定的變更事務(wù),從而不允許任何其它事務(wù)同時(shí)存取有關(guān)的對(duì)象。
根據(jù)圖4的實(shí)施方案,寫(xiě)入事務(wù)DT是所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)寫(xiě)入事務(wù)DT和某個(gè)其它的事務(wù)組成,而不管該其它事務(wù)是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT(圖4a),一個(gè)非鎖定組合,由兩個(gè)讀取事務(wù)CT組成(圖4b)。
根據(jù)本發(fā)明的第三個(gè)實(shí)施方案,事務(wù)可以被相應(yīng)劃分為簡(jiǎn)單事務(wù)AT的組合和復(fù)雜事務(wù)BT的組合,讀取事務(wù)CT的組合和寫(xiě)入事務(wù)DT的組合。
從圖5中可以看出,在這樣的組合情況中,復(fù)雜事務(wù)BT和寫(xiě)入事務(wù)DT都形成所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)復(fù)雜寫(xiě)入事務(wù)BDT和一個(gè)復(fù)雜事務(wù)BT組成,不管后者是寫(xiě)入事務(wù)DT還是讀取事務(wù)CT(圖5a),一個(gè)非鎖定組合由簡(jiǎn)單事務(wù)AT,不管它是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT,和某個(gè)其它事務(wù)組成,不管這一其它事務(wù)是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT,是簡(jiǎn)單事務(wù)AT還是復(fù)雜事務(wù)BT(圖5b),或者由兩個(gè)復(fù)雜讀取事務(wù)BCT組成(圖5c)。
依照本發(fā)明的第四個(gè)實(shí)施方案,死鎖危險(xiǎn)的處理也可能包括相互之間從不會(huì)引起死鎖的嚴(yán)格增長(zhǎng)的事務(wù)。但是,一個(gè)死鎖仍可以發(fā)生在非嚴(yán)格增長(zhǎng)的事務(wù)之間以及一個(gè)嚴(yán)格增長(zhǎng)的事務(wù)和一個(gè)非嚴(yán)格增長(zhǎng)的事務(wù)之間。
依照本實(shí)施方案,事務(wù)可以被劃分為嚴(yán)格增長(zhǎng)的事務(wù)ET和非嚴(yán)格增長(zhǎng)的事務(wù)FT。
在圖6中對(duì)本方案進(jìn)行了說(shuō)明,可以看出非嚴(yán)格增長(zhǎng)的事務(wù)FT形成所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)非嚴(yán)格增長(zhǎng)的事務(wù)FT和某個(gè)其它事務(wù)組成,不管這一其它事務(wù)是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖6a),一個(gè)非鎖定組合由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)ET組成(圖6b)。
依照本發(fā)明的第五個(gè)實(shí)施方案,事務(wù)可以被劃分為相應(yīng)的嚴(yán)格增長(zhǎng)的事務(wù)ET和非嚴(yán)格增長(zhǎng)的事務(wù)FT、簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT的組合。
從圖7中可以看出,在一個(gè)這樣的組合中,復(fù)雜事務(wù)BT和非嚴(yán)格增長(zhǎng)的事務(wù)FT都可形成所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)復(fù)雜的非嚴(yán)格增長(zhǎng)的事務(wù)BFT和一個(gè)復(fù)雜事務(wù)BT組成,不管該復(fù)雜事務(wù)BT是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖7a),一個(gè)非鎖定組合由一個(gè)簡(jiǎn)單事務(wù)AT,無(wú)論它是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT,和某個(gè)其它的事務(wù)組成,而不管這一其它事務(wù)是簡(jiǎn)單事務(wù)AT還是復(fù)雜事務(wù)BT,是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖7b),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)ET組成,而不管它們是簡(jiǎn)單的還是復(fù)雜的事務(wù)(圖7c)。
依照本發(fā)明的第六個(gè)實(shí)施方案,事務(wù)可以被劃分為讀取事務(wù)CT和寫(xiě)入事務(wù)DT的組合,以及嚴(yán)格增長(zhǎng)的事務(wù)ET、非嚴(yán)格增長(zhǎng)的事務(wù)FT的組合。
從圖8中可以看出,寫(xiě)入事務(wù)DT和非嚴(yán)格增長(zhǎng)的事務(wù)FT都可形成所謂的鎖定事務(wù),一個(gè)鎖定組合由寫(xiě)入的非嚴(yán)格增長(zhǎng)的事務(wù)DFT和某個(gè)其它事務(wù)組成,不管該其它事務(wù)是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT、嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖8a),或者由一個(gè)寫(xiě)入的嚴(yán)格增長(zhǎng)的事務(wù)DET和一個(gè)讀取的非嚴(yán)格增長(zhǎng)的事務(wù)CFT組成(圖8b),一個(gè)非鎖定組合由兩個(gè)讀入事務(wù)CT組成,而不管這兩個(gè)事務(wù)是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖8c),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)ET組成,無(wú)論它們是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT(圖8d)。
依照本發(fā)明的第七個(gè)實(shí)施方案,事務(wù)可以被相應(yīng)劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT,讀取事務(wù)CT和寫(xiě)入事務(wù)DT,以及嚴(yán)格增長(zhǎng)的事務(wù)ET和非嚴(yán)格增長(zhǎng)的事務(wù)FT的組合。
從圖9中可以看出,在這樣一種事務(wù)類(lèi)別組合中,復(fù)雜事務(wù)BT、寫(xiě)入事務(wù)DT和非嚴(yán)格增長(zhǎng)事務(wù)FT都會(huì)形成所謂的鎖定事務(wù),一個(gè)鎖定組合由一個(gè)復(fù)雜寫(xiě)入非嚴(yán)格增長(zhǎng)的事務(wù)BDFT和一個(gè)復(fù)雜事務(wù)BT組成,不管這一復(fù)雜事務(wù)是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT、嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖9a),或者由一個(gè)復(fù)雜的寫(xiě)入嚴(yán)格增長(zhǎng)的事務(wù)BDET和一個(gè)復(fù)雜的讀取的非嚴(yán)格增長(zhǎng)的事務(wù)BCFT組成(圖9b),一個(gè)非鎖定組合由一個(gè)簡(jiǎn)單的事務(wù)AT與某個(gè)其它的事務(wù)組成,不管該其它事務(wù)是一個(gè)讀取事務(wù)CT還是寫(xiě)入事務(wù)DT、嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖9c),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)ET組成,無(wú)論它們是讀取事務(wù)CT還是寫(xiě)入事務(wù)DT、簡(jiǎn)單事務(wù)AT還是復(fù)雜事務(wù)BT(圖9d),或者由兩個(gè)復(fù)雜的讀取事務(wù)BCT組成,而不管它們是嚴(yán)格增長(zhǎng)的事務(wù)ET還是非嚴(yán)格增長(zhǎng)的事務(wù)FT(圖9e)。
作為嚴(yán)格增長(zhǎng)和不發(fā)展的事務(wù),簡(jiǎn)單的事務(wù)沒(méi)有在圖9中顯示,因?yàn)楦鶕?jù)定義這些事務(wù)都是嚴(yán)格增長(zhǎng)的。
顯然對(duì)于本領(lǐng)域的技術(shù)人員而言,事務(wù)還可以根據(jù)這里所描述的標(biāo)準(zhǔn)以外的其它的標(biāo)準(zhǔn)來(lái)分類(lèi),鎖定和非鎖定的組合也可以僅用這些類(lèi)別或結(jié)合與本發(fā)明有關(guān)的其它類(lèi)別來(lái)產(chǎn)生,顯然本文介紹的類(lèi)別和類(lèi)別組合僅是本發(fā)明所建議的實(shí)施方案。
為了標(biāo)記或標(biāo)志具有類(lèi)型歸屬的事務(wù),本發(fā)明建議為相應(yīng)的事務(wù)分配一個(gè)所謂的鎖定標(biāo)志2(圖10),用于顯示一個(gè)事務(wù)在與另一個(gè)事務(wù)組合時(shí)是否會(huì)引起死鎖。從圖中將看到,簡(jiǎn)言之,可以說(shuō)事務(wù)3包括主體部分31、指令部分32和變量部分33。在所述情況下,在事務(wù)的主體部分31為鎖定標(biāo)志2分配一個(gè)位置。
這一鎖定標(biāo)志可以包含不同的位數(shù),取決于所要表示的類(lèi)別歸屬或從屬關(guān)系。
當(dāng)事務(wù)被劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT時(shí),根據(jù)本發(fā)明(如圖11),建議鎖定標(biāo)志2包括第一個(gè)位21,對(duì)于簡(jiǎn)單事務(wù)AT為該位分配第一邏輯值,對(duì)于復(fù)雜事務(wù)BT則分配第二邏輯值。
當(dāng)事務(wù)被劃分為讀取事務(wù)CT和寫(xiě)入事務(wù)DT時(shí),根據(jù)本發(fā)明(如圖12),建議鎖定標(biāo)志包括第二個(gè)位22,對(duì)于讀取事務(wù)CT為該位分配第一邏輯值,對(duì)于寫(xiě)入事務(wù)DT則分配第二邏輯值。
當(dāng)事務(wù)被相應(yīng)劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT,讀取事務(wù)CT和寫(xiě)入事務(wù)DT時(shí),根據(jù)本發(fā)明(如圖13),建議鎖定標(biāo)志包括第一個(gè)位21和第二個(gè)位22,對(duì)于簡(jiǎn)單事務(wù)AT為位21分配第一邏輯值,對(duì)于復(fù)雜事務(wù)BT則為位21分配第二邏輯值,對(duì)于讀取事務(wù)CT為位22分配第一邏輯值,對(duì)于寫(xiě)入事務(wù)DT則為位22分配第二邏輯值。
當(dāng)事務(wù)被劃分為嚴(yán)格增長(zhǎng)事務(wù)ET和非嚴(yán)格增長(zhǎng)事務(wù)FT時(shí),根據(jù)本發(fā)明(如圖14),建議鎖定標(biāo)志包括第三個(gè)位23,對(duì)于嚴(yán)格增長(zhǎng)事務(wù)ET為該位分配第一邏輯值,對(duì)于非嚴(yán)格增長(zhǎng)事務(wù)FT則分配第二邏輯值。
當(dāng)事務(wù)被相應(yīng)劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT,嚴(yán)格增長(zhǎng)事務(wù)ET和非嚴(yán)格增長(zhǎng)事務(wù)FT時(shí),根據(jù)本發(fā)明(如圖15),建議鎖定標(biāo)志2包括第一個(gè)位21和第三個(gè)位23,對(duì)于簡(jiǎn)單事務(wù)AT為位21分配第一邏輯值,對(duì)于復(fù)雜事務(wù)BT則為位21分配第二邏輯值,對(duì)于嚴(yán)格增長(zhǎng)事務(wù)ET為位23分配第一邏輯值,對(duì)于非嚴(yán)格增長(zhǎng)事務(wù)FT則為位23分配第二邏輯值。
當(dāng)事務(wù)被相應(yīng)劃分為讀取事務(wù)CT和寫(xiě)入事務(wù)DT,嚴(yán)格增長(zhǎng)事務(wù)ET和非嚴(yán)格增長(zhǎng)事務(wù)FT時(shí),根據(jù)本發(fā)明(如圖16),建議鎖定標(biāo)志將包括第二個(gè)位22和第三個(gè)位23,對(duì)于讀取事務(wù)CT為位22分配第一邏輯值,對(duì)于寫(xiě)入事務(wù)DT則為位22分配第二邏輯值,對(duì)于嚴(yán)格增長(zhǎng)事務(wù)ET為位23分配第一邏輯值,對(duì)于非嚴(yán)格增長(zhǎng)事務(wù)FT則為位23分配第二邏輯值。
當(dāng)事務(wù)被相應(yīng)劃分為簡(jiǎn)單事務(wù)AT和復(fù)雜事務(wù)BT,讀取事務(wù)CT和寫(xiě)入事務(wù)DT,嚴(yán)格增長(zhǎng)事務(wù)ET和非嚴(yán)格增長(zhǎng)事務(wù)FT時(shí),根據(jù)本發(fā)明(如圖17),建議鎖定標(biāo)志將包括第一個(gè)位21、第二個(gè)位22和第三個(gè)位23,對(duì)于簡(jiǎn)單事務(wù)AT為位21分配第一邏輯值,對(duì)于復(fù)雜事務(wù)BT則為位21分配第二邏輯值,對(duì)于讀取事務(wù)CT為位22分配第一邏輯值,對(duì)于寫(xiě)入事務(wù)DT則為位22分配第二邏輯值,對(duì)于嚴(yán)格增長(zhǎng)事務(wù)ET為位23分配第一邏輯值,對(duì)于非嚴(yán)格增長(zhǎng)事務(wù)FT則為位23分配第二邏輯值。
圖18表示事務(wù)T2、T3、T4、T5是定位于封鎖隊(duì)列L1中并在封鎖隊(duì)列L1中等待,其鎖定位為2T2、2T3、2T4、2T5,使得在隊(duì)列中能夠直接看出事務(wù)的類(lèi)別歸屬,某些等待的事務(wù)不需與其它的事務(wù)比較,因?yàn)橐勒毡景l(fā)明,某些事務(wù),比如簡(jiǎn)單事務(wù),絕不會(huì)導(dǎo)致死鎖。
也可以通過(guò)為相應(yīng)的事務(wù)分配多個(gè)封鎖隊(duì)列來(lái)表明其類(lèi)型歸屬。
圖9表示一個(gè)擁有多個(gè)不同封鎖隊(duì)列L31、L32、L32、…、L3n的對(duì)象03。一個(gè)事務(wù)T10已經(jīng)對(duì)對(duì)象03進(jìn)行了存取,而其它的事務(wù)T11、T12、T13、…、T19在不同的封鎖隊(duì)列或線L31、L32、L32、…、L3n中等待獲得對(duì)對(duì)象03的存取。在這一特定的實(shí)施方案中,針對(duì)相應(yīng)對(duì)象的隊(duì)列數(shù)目(n)等于數(shù)據(jù)庫(kù)中活動(dòng)的事務(wù)的類(lèi)別數(shù)目,隊(duì)列的從屬關(guān)系表明了相應(yīng)的事務(wù)T11、T12、T13、…、T19的類(lèi)型歸屬。
如前面所描述,屬于同樣或不同類(lèi)別的事務(wù)會(huì)引起死鎖。
這樣,隊(duì)列的從屬關(guān)系,或類(lèi)型歸屬表明一個(gè)事務(wù)是否可以被認(rèn)為是鎖定事務(wù),或者該事務(wù)在與另一個(gè)事務(wù)組合時(shí)能否引起死鎖。
這些類(lèi)別可以包括簡(jiǎn)單的和復(fù)雜的事務(wù),讀取的和寫(xiě)入的事務(wù),和/或嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)的組合。顯然,這里僅通過(guò)例子給出這些類(lèi)別,本說(shuō)明中沒(méi)有提及的其它的特征也可以通過(guò)不同的封鎖隊(duì)列的方法來(lái)體現(xiàn)。
顯然,本發(fā)明并不局限于前面的描述和例舉方案說(shuō)明,可以在下面的權(quán)利要求所規(guī)定的發(fā)明概念范圍內(nèi)進(jìn)行修改。
權(quán)利要求
1.一種用于處理數(shù)據(jù)庫(kù)中同時(shí)進(jìn)行的事務(wù)間死鎖危險(xiǎn)的方法,該方法為所述數(shù)據(jù)庫(kù)中的相應(yīng)的對(duì)象被分配至少一個(gè)封鎖隊(duì)列,要求存取一個(gè)對(duì)象的事務(wù)被放置在隊(duì)列中并在此等待前面的事務(wù)對(duì)該對(duì)象的存取,其中,所述的處理過(guò)程包括詳細(xì)檢查所述封鎖隊(duì)列中的事務(wù),其特征在于該數(shù)據(jù)庫(kù)中一個(gè)活動(dòng)的或正在進(jìn)行的事務(wù)可以歸類(lèi)為一個(gè)鎖定事務(wù),一個(gè)鎖定事務(wù)與一個(gè)或多個(gè)其它事務(wù)組合可能引起一個(gè)死鎖,一個(gè)鎖定事務(wù)與一個(gè)或多個(gè)其它事務(wù)的組合可分為鎖定組合和非鎖定組合,一個(gè)非鎖定組合絕不會(huì)引起死鎖,而一個(gè)鎖定組合能夠引起死鎖,檢測(cè)到一個(gè)鎖定事務(wù)會(huì)導(dǎo)致進(jìn)一步對(duì)所述封鎖隊(duì)列的詳細(xì)檢查,在這種檢查中將所述鎖定事務(wù)與屬于所述封鎖隊(duì)列中的事務(wù)進(jìn)行比較,以便確定這種事務(wù)組合是否構(gòu)成一個(gè)鎖定或非鎖定的組合,僅當(dāng)檢測(cè)到一個(gè)鎖定組合時(shí)才會(huì)導(dǎo)致進(jìn)一步的操作。
2.如權(quán)利要求1的方法,特征在于所述的事務(wù)被分為簡(jiǎn)單的和復(fù)雜的事務(wù);簡(jiǎn)單事務(wù)由在數(shù)據(jù)庫(kù)中僅存取一個(gè)對(duì)象的事務(wù)組成;復(fù)雜的事務(wù)由在數(shù)據(jù)庫(kù)中存取兩個(gè)或多個(gè)對(duì)象的事務(wù)組成;復(fù)雜事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由兩個(gè)復(fù)雜事務(wù)組成;所述的非鎖定組合由一個(gè)簡(jiǎn)單事務(wù)和某個(gè)其它事務(wù)組成,而不管該其它事務(wù)是一個(gè)簡(jiǎn)單的還是復(fù)雜的事務(wù)。
3.如權(quán)利要求1的方法,特征在于所述的事務(wù)被分為寫(xiě)入和讀取事務(wù);所述寫(xiě)入事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)寫(xiě)入事務(wù)和某個(gè)其它事務(wù)組成,而不管該其它事務(wù)是一個(gè)讀取的還是寫(xiě)入的事務(wù);所述的非鎖定組合由兩個(gè)讀取事務(wù)組成。
4.如權(quán)利要求1的方法,特征在于所述的事務(wù)被分別劃分為簡(jiǎn)單的和復(fù)雜的事務(wù),讀取的和寫(xiě)入的事務(wù);簡(jiǎn)單事務(wù)由在數(shù)據(jù)庫(kù)中僅存取一個(gè)對(duì)象的事務(wù)組成;復(fù)雜的事務(wù)由在數(shù)據(jù)庫(kù)中存取兩個(gè)或多個(gè)對(duì)象的事務(wù)組成;所述的復(fù)雜事務(wù)和寫(xiě)入事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)復(fù)雜寫(xiě)入事務(wù)和一個(gè)復(fù)雜事務(wù)組成,而不管后者是一個(gè)寫(xiě)入的還是讀取的事務(wù);所述的非鎖定組合由一個(gè)簡(jiǎn)單事務(wù)和某個(gè)其它事務(wù)組成,而不管該簡(jiǎn)單事務(wù)是一個(gè)讀取的還是寫(xiě)入的事務(wù),不管該其它事務(wù)是讀取的還是寫(xiě)入的,是簡(jiǎn)單的還是復(fù)雜的,或由兩個(gè)復(fù)雜的讀取事務(wù)組成。
5.如權(quán)利要求1的方法,其中在所述數(shù)據(jù)庫(kù)中嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)同時(shí)是活動(dòng)的,該方法的特征在于所述的非嚴(yán)格增長(zhǎng)的事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)非嚴(yán)格增長(zhǎng)的事務(wù)和某個(gè)其它的事務(wù)組成,不管該其它事務(wù)是嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的;所述的非鎖定組合由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)組成。
6.如權(quán)利要求1的方法,其中在所述數(shù)據(jù)庫(kù)中嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)同時(shí)是活動(dòng)的,該方法的特征在于所述事務(wù)被分別劃分為簡(jiǎn)單的和復(fù)雜的事務(wù),嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù);簡(jiǎn)單的事務(wù)由僅對(duì)所述數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象存取的事務(wù)組成;復(fù)雜的事務(wù)由對(duì)所述數(shù)據(jù)庫(kù)中的兩個(gè)或多個(gè)對(duì)象存取的事務(wù)組成;所述的復(fù)雜事務(wù)和非嚴(yán)格增長(zhǎng)的事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)復(fù)雜的非嚴(yán)格增長(zhǎng)的事務(wù)和一個(gè)復(fù)雜事務(wù)組成,而不管后者是嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的事務(wù);所述的非鎖定組合由一個(gè)簡(jiǎn)單的事務(wù)和某個(gè)其它的事務(wù)組成,而不管該簡(jiǎn)單事務(wù)是嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的事務(wù),不管該其它事務(wù)是一個(gè)簡(jiǎn)單的還是復(fù)雜的,嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的事務(wù),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)組成,而不管它們是簡(jiǎn)單的還是復(fù)雜的事務(wù)。
7.如權(quán)利要求1的方法,其中在所述數(shù)據(jù)庫(kù)中嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)同時(shí)是活動(dòng)的,該方法的特征在于所述事務(wù)被分別劃分為讀取的和寫(xiě)入的事務(wù),嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù);所述的寫(xiě)入事務(wù)和非嚴(yán)格增長(zhǎng)的事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)寫(xiě)入的非嚴(yán)格增長(zhǎng)的事務(wù)和某個(gè)其它事務(wù)組成,而不管該其它事務(wù)是讀取的還是寫(xiě)入的,嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的事務(wù),或者是寫(xiě)入的嚴(yán)格增長(zhǎng)的事務(wù);所述的非鎖定組合由兩個(gè)讀取的事務(wù)組成,而不管這些事務(wù)是嚴(yán)格增長(zhǎng)的還是非嚴(yán)格增長(zhǎng)的事務(wù),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)組成,而不管它們是讀取的還是寫(xiě)入的事務(wù)。
8.如權(quán)利要求1的方法,其中在所述數(shù)據(jù)庫(kù)中嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù)同時(shí)是活動(dòng)的,該方法的特征在于所述事務(wù)被分別劃分為簡(jiǎn)單的和復(fù)雜的事務(wù),讀取的和寫(xiě)入的事務(wù),嚴(yán)格增長(zhǎng)的和非嚴(yán)格增長(zhǎng)的事務(wù);簡(jiǎn)單的事務(wù)由僅對(duì)所述數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象存取的事務(wù)組成;復(fù)雜的事務(wù)由對(duì)所述數(shù)據(jù)庫(kù)中的兩個(gè)或多個(gè)對(duì)象存取的事務(wù)組成;所述的復(fù)雜事務(wù),寫(xiě)入事務(wù)和非嚴(yán)格增長(zhǎng)的事務(wù)構(gòu)成所述的鎖定事務(wù);所述的鎖定組合由一個(gè)復(fù)雜的寫(xiě)入的非嚴(yán)格增長(zhǎng)的事務(wù)和一個(gè)復(fù)雜事務(wù)組成,而不管后者是一個(gè)讀取的,寫(xiě)入的,嚴(yán)格增長(zhǎng)的,還是非嚴(yán)格增長(zhǎng)的事務(wù),是復(fù)雜寫(xiě)入的,嚴(yán)格增長(zhǎng)的,還是復(fù)雜讀取的,非嚴(yán)格增長(zhǎng)的事務(wù);所述的非鎖定組合是由一個(gè)簡(jiǎn)單的事務(wù)與某個(gè)其它的事務(wù)組成,不管該其它事務(wù)是一個(gè)寫(xiě)入的,讀取的,嚴(yán)格增長(zhǎng)的,還是非嚴(yán)格增長(zhǎng)的事務(wù),或者由兩個(gè)嚴(yán)格增長(zhǎng)的事務(wù)組成,而不管它們是鎖定的,寫(xiě)入的,簡(jiǎn)單的或是復(fù)雜的事務(wù),或者由兩個(gè)復(fù)雜的讀取事務(wù)組成,而不管他們是嚴(yán)格增長(zhǎng)的事務(wù)還是非嚴(yán)格增長(zhǎng)的事務(wù)。
9.如權(quán)利要求1的方法,該方法的特征在于為所述的事務(wù)被分配一個(gè)所謂的鎖定標(biāo)記;該鎖定標(biāo)記用來(lái)表示所述事務(wù)是否會(huì)與某一其它事務(wù)組合引起死鎖。
10.如權(quán)利要求2和9的方法,其特征在于所述的標(biāo)記包括第一個(gè)位;針對(duì)簡(jiǎn)單事務(wù)賦予該第一個(gè)位第一邏輯值,針對(duì)復(fù)雜事務(wù)賦予該位第二邏輯值。
11.如權(quán)利要求3和9的方法,其特征在于所述的標(biāo)記包括第二個(gè)位;針對(duì)讀取事務(wù)賦予該第二個(gè)位第一邏輯值,針對(duì)寫(xiě)入事務(wù)賦予該位第二邏輯值。
12.如權(quán)利要求4和9的方法,其特征在于所述的標(biāo)記包括第一個(gè)位和第二個(gè)位;針對(duì)簡(jiǎn)單事務(wù)賦予該第一個(gè)位第一邏輯值,針對(duì)復(fù)雜事務(wù)賦予該位第二邏輯值;針對(duì)讀取事務(wù)賦予該第二個(gè)位第一邏輯值,針對(duì)寫(xiě)入事務(wù)賦予該位第二邏輯值。
13.如權(quán)利要求5和9的方法,其特征在于所述的標(biāo)記包括第三個(gè)位;針對(duì)嚴(yán)格增長(zhǎng)事務(wù)賦予該第三個(gè)位第一邏輯值,針對(duì)非嚴(yán)格增長(zhǎng)事務(wù)賦予該位第二邏輯值。
14.如權(quán)利要求6和9的方法,其特征在于所述的標(biāo)記包括第一個(gè)位和第三個(gè)位;針對(duì)簡(jiǎn)單事務(wù)賦予該第一個(gè)位第一邏輯值,針對(duì)復(fù)雜事務(wù)賦予該位第二邏輯值;針對(duì)嚴(yán)格增長(zhǎng)事務(wù)賦予該第三個(gè)位第一邏輯值,針對(duì)非嚴(yán)格增長(zhǎng)事務(wù)賦予該位第二邏輯值。
15.如權(quán)利要求7和9的方法,其特征在于所述的標(biāo)記包括第二個(gè)位和第三個(gè)位;針對(duì)讀取事務(wù)賦予該第二個(gè)位第一邏輯值,針對(duì)寫(xiě)入事務(wù)賦予該位第二邏輯值;針對(duì)嚴(yán)格增長(zhǎng)事務(wù)賦予該第三個(gè)位第一邏輯值,針對(duì)非嚴(yán)格增長(zhǎng)事務(wù)賦予該位第二邏輯值。
16.如權(quán)利要求8和9的方法,其特征在于所述的標(biāo)記包括第一個(gè)位、第二個(gè)和第三個(gè)位;針對(duì)簡(jiǎn)單事務(wù)賦予該第一個(gè)位第一邏輯值,針對(duì)復(fù)雜事務(wù)賦予該位第二邏輯值;針對(duì)讀取事務(wù)賦予該第二個(gè)位第一邏輯值,針對(duì)寫(xiě)入事務(wù)賦予該位第二邏輯值;針對(duì)嚴(yán)格增長(zhǎng)事務(wù)賦予該第三個(gè)位第一邏輯值,針對(duì)非嚴(yán)格增長(zhǎng)事務(wù)賦予該位第二邏輯值。
17.如權(quán)利要求9至16任意一個(gè)的方法,其特征在于所述的標(biāo)記顯現(xiàn)在所述的封鎖隊(duì)列中。
18.如權(quán)利要求1至8的任意一個(gè)的方法,其中為所述對(duì)象分配多個(gè)封鎖隊(duì)列,其特征在于相應(yīng)對(duì)象的封鎖隊(duì)列的數(shù)目等于數(shù)據(jù)庫(kù)中活動(dòng)事務(wù)的類(lèi)型數(shù)目,其中屬于同一個(gè)或不同類(lèi)別的事務(wù)引起一個(gè)死鎖;所述的隊(duì)列歸屬和類(lèi)別歸屬表明一個(gè)事務(wù)與另一個(gè)事務(wù)組合是否能引起死鎖。
19.如權(quán)利要求18方法,其特征在于所述的類(lèi)別分別包括簡(jiǎn)單和復(fù)雜事務(wù),讀取和寫(xiě)入事務(wù),和/或嚴(yán)格增長(zhǎng)和非嚴(yán)格增長(zhǎng)事務(wù)的組合。
全文摘要
本發(fā)明涉及一種處理數(shù)據(jù)庫(kù)(1)中同時(shí)進(jìn)行的事務(wù)(T1,T2)間的死鎖危險(xiǎn)的方法。該方法是基于分別為數(shù)據(jù)庫(kù)(1)中的對(duì)象(01,02)分配一個(gè)封鎖隊(duì)列(L1,L2),要求存取一個(gè)對(duì)象(01,02)的事務(wù)(T1,T2,T3,…,T8)被放置于隊(duì)列中,等待前面的事務(wù)對(duì)所述對(duì)象的存取。處理過(guò)程包括全面檢查,或詳細(xì)檢查屬于不同對(duì)象(01)的封鎖隊(duì)列(L1)以便檢測(cè)能夠引起死鎖的所謂鎖定事務(wù)(T1),而后該事務(wù)(T1)與其它封鎖隊(duì)列(L2)中的其它事務(wù)(T2,T6,T1,T7,T8)進(jìn)行比較,由此可以檢測(cè)到均要求存取第一個(gè)和第二個(gè)對(duì)象(01,02)的第一個(gè)和第二個(gè)事務(wù)(T1,T2)間的死鎖危險(xiǎn)。數(shù)據(jù)庫(kù)中那些正在進(jìn)行的或活動(dòng)的,并且依照上述比較,會(huì)引起死鎖的事務(wù)的組合被分別劃分為鎖定的和非鎖定的組合。僅當(dāng)檢測(cè)到鎖定組合時(shí)才會(huì)采取進(jìn)一步的操作。
文檔編號(hào)G06F12/00GK1319203SQ9981121
公開(kāi)日2001年10月24日 申請(qǐng)日期1999年7月22日 優(yōu)先權(quán)日1998年7月22日
發(fā)明者M·隆斯特倫 申請(qǐng)人:艾利森電話股份有限公司