專利名稱:用于管理對(duì)計(jì)算機(jī)數(shù)據(jù)庫(kù)的訪問的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及計(jì)算機(jī)數(shù)據(jù)庫(kù),并且尤其涉及管理對(duì)計(jì)算機(jī)數(shù)據(jù)庫(kù)的訪問。更加尤其的是,本發(fā)明涉及一種用于協(xié)調(diào)對(duì)計(jì)算機(jī)數(shù)據(jù)庫(kù)的代理訪問的方法和系統(tǒng)。
背景技術(shù):
數(shù)據(jù)庫(kù)是用于對(duì)數(shù)據(jù)/信息進(jìn)行存儲(chǔ)、組織、并允許對(duì)所存儲(chǔ)的數(shù)據(jù)/信息進(jìn)行訪問的有用工具。數(shù)據(jù)庫(kù)用戶通常使用數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)(字段、記錄、以及文件)的存儲(chǔ)、組織、以及檢索進(jìn)行控制。許多DBMS是在客戶機(jī)/服務(wù)器環(huán)境中實(shí)現(xiàn)的,在該環(huán)境中DBMS的服務(wù)器通過(guò)網(wǎng)絡(luò)與一個(gè)或多個(gè)客戶機(jī)系統(tǒng)相連,并且該聯(lián)網(wǎng)的服務(wù)器協(xié)調(diào)對(duì)數(shù)據(jù)庫(kù)的客戶機(jī)訪問。通常通過(guò)與和DBMS相連的這些遠(yuǎn)程客戶機(jī)相關(guān)聯(lián)的一個(gè)或多個(gè)代理對(duì)數(shù)據(jù)庫(kù)之內(nèi)的數(shù)據(jù)進(jìn)行更新和/或訪問。
該DBMS包括用于對(duì)永久存儲(chǔ)設(shè)備之內(nèi)出現(xiàn)的每個(gè)改變進(jìn)行記錄(日志記錄(logging))的數(shù)據(jù)庫(kù)“記錄器(logger)”,以便使數(shù)據(jù)庫(kù)是可靠的。日志由用于輸入/輸出效率(efficiency)的臨時(shí)部分和永久部分組成。臨時(shí)部分用于對(duì)數(shù)據(jù)庫(kù)操作的、諸如執(zhí)行數(shù)據(jù)庫(kù)操作時(shí)對(duì)數(shù)據(jù)庫(kù)的改變這樣的細(xì)節(jié)進(jìn)行記錄。臨時(shí)部分被稱為日志緩沖器,并且駐留于DBMS的存儲(chǔ)器中。定期地、例如當(dāng)記錄緩沖器變滿時(shí)將臨時(shí)部分的內(nèi)容傳送到永久部分。
代表客戶機(jī)的代理可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行改變并且將這些改變記錄到日志緩沖器中。當(dāng)代理提交(commit)了改變時(shí),中止代理處理,直到記錄器將該改變寫入到永久存儲(chǔ)設(shè)備中并且向代理通知已永久地記錄了該改變?yōu)橹?。在諸如大型對(duì)稱多處理(SMP)系統(tǒng)這樣的多處理環(huán)境中,大量的客戶機(jī)(用戶)可能彼此同時(shí)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行改變。然而,為了確保數(shù)據(jù)庫(kù)的可靠性,每次僅允許單個(gè)客戶機(jī)(使用相應(yīng)的代理處理)對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新。記錄器提供了這樣的控制機(jī)制,該控制機(jī)制允許調(diào)度不同的代理以使用被稱為“線程等待(threadwait)”的系統(tǒng)來(lái)執(zhí)行更新。
利用線程等待系統(tǒng),當(dāng)在整個(gè)系統(tǒng)之內(nèi)存在數(shù)以千計(jì)的正在執(zhí)行事務(wù)的代理時(shí),記錄器必須首先將改變寫入到永久存儲(chǔ)設(shè)備,然后向所有數(shù)以千計(jì)的代理通知這些代理現(xiàn)在可以繼續(xù)進(jìn)行其各自的處理。向該大量代理進(jìn)行通知,會(huì)花費(fèi)相當(dāng)數(shù)量的時(shí)間,并且在記錄器完成每個(gè)提交處理的過(guò)程中會(huì)導(dǎo)致大的等待時(shí)間。代理處理對(duì)日志進(jìn)行更新的總體事務(wù)速率受到記錄器能夠?qū)懭霐?shù)據(jù)然后通知所有等待的代理繼續(xù)進(jìn)行的速度的限制。
因此,由于代理全部等待記錄器在任何一個(gè)等待的代理可以繼續(xù)進(jìn)行之前通知每個(gè)等待的代理,所以傳統(tǒng)的方法包括固有的等待時(shí)間。應(yīng)當(dāng)已經(jīng)注意到了數(shù)據(jù)庫(kù)日志記錄處理中的可測(cè)量的低效率,因而,本發(fā)明認(rèn)識(shí)到需要一種改善的、用于完成日志記錄處理而不具有當(dāng)前方法的固有等待時(shí)間的方法。
發(fā)明內(nèi)容
公開了這樣的一種方法、計(jì)算機(jī)程序產(chǎn)品、以及數(shù)據(jù)庫(kù)管理系統(tǒng),其用于通過(guò)從數(shù)據(jù)庫(kù)(DB)記錄器中除去代理通知要求,并且無(wú)需用于向每個(gè)等待代理提供代理可繼續(xù)進(jìn)行其各自處理這樣的通知的等待時(shí)間即可允許DB記錄器進(jìn)行下一提交處理,而基本上減少了數(shù)據(jù)庫(kù)(DB)日志記錄處理的等待時(shí)間。當(dāng)代理提交對(duì)數(shù)據(jù)庫(kù)的永久存儲(chǔ)設(shè)備的改變時(shí),用于對(duì)永久存儲(chǔ)設(shè)備執(zhí)行更新的記錄器接收該請(qǐng)求。記錄器對(duì)等待提交處理完成的代理的列表進(jìn)行編譯,并且將其提供給下一提交代理。一旦提交處理完成,則下一提交代理就向等待代理通知它們可繼續(xù)進(jìn)行其各自的處理。記錄器不再負(fù)責(zé)執(zhí)行該通知,并且能夠立即進(jìn)行對(duì)永久存儲(chǔ)器的下一更新,而不會(huì)利用用于向等待代理通知先前提交處理的完成的相當(dāng)大的時(shí)間量。
根據(jù)本發(fā)明的一個(gè)方面,提供了這樣一種數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),該數(shù)據(jù)庫(kù)管理系統(tǒng)包括記錄器實(shí)用程序和與對(duì)數(shù)據(jù)庫(kù)的永久存儲(chǔ)設(shè)備進(jìn)行訪問和更新的多個(gè)客戶機(jī)相關(guān)聯(lián)的多個(gè)代理。DBMS包括用于代表代理完成對(duì)永久(或持久性)存儲(chǔ)設(shè)備的數(shù)據(jù)提交操作的記錄器。DBMS還包括用于表示進(jìn)行或完成提交處理的時(shí)間的標(biāo)志。當(dāng)?shù)谝淮韺⒁蝗罩居涗浀臄?shù)據(jù)/工作提交給永久存儲(chǔ)設(shè)備時(shí),使一個(gè)或多個(gè)客戶機(jī)(或代理)進(jìn)行等待(即停止數(shù)據(jù)庫(kù)之內(nèi)的處理),直到接收到用于表示記錄器已完成提交處理的信號(hào)為止。
向順序排對(duì)的、希望完成下一提交處理的第二代理提供等待代理列表,以便代表記錄器進(jìn)行通知。當(dāng)記錄器完成提交處理時(shí),第二代理開始通知處理,第二代理通過(guò)該通知處理向所有等待代理通知它們可以繼續(xù)進(jìn)行其接下來(lái)的事務(wù)(一個(gè)或多個(gè))。與第二代理進(jìn)行該通知同時(shí)地,記錄器開始第二代理的提交處理。當(dāng)?shù)诙硪呀Y(jié)束該通知時(shí),第二代理等待記錄器將第二代理的處理的數(shù)據(jù)寫入(日志記錄)到永久存儲(chǔ)設(shè)備(如果仍未完成的話)。在一種實(shí)現(xiàn)方式中,記錄器每次提交一個(gè)緩沖器,并且因此,在第二代理完成該通知的同時(shí),記錄器可以對(duì)下一緩沖器的工作情況進(jìn)行計(jì)算與處理,由此可使記錄器的吞吐量增加。
從下面詳細(xì)撰寫的說(shuō)明中可顯而易見地得知本發(fā)明的上述及其他目的、特征、以及優(yōu)點(diǎn)。
當(dāng)結(jié)合附圖進(jìn)行閱讀時(shí),通過(guò)參考下面對(duì)說(shuō)明性實(shí)施例的詳細(xì)說(shuō)明,可最好地理解本發(fā)明本身及優(yōu)選使用模式、其進(jìn)一步的目的、以及優(yōu)點(diǎn),其中圖1是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的、具有通過(guò)網(wǎng)絡(luò)與數(shù)據(jù)庫(kù)服務(wù)器相耦合的遠(yuǎn)程客戶機(jī)的聯(lián)網(wǎng)數(shù)據(jù)庫(kù)系統(tǒng)的方框圖;
圖2是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的、可被用作數(shù)據(jù)庫(kù)服務(wù)器的示意性計(jì)算機(jī)系統(tǒng)的方框圖;圖3是示出了在本發(fā)明的一個(gè)示意性實(shí)施例內(nèi)所使用的數(shù)據(jù)庫(kù)管理系統(tǒng)的記錄器實(shí)用程序及其他功能部件的方框圖;圖4A是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例、在增強(qiáng)型DBMS方案之內(nèi)記錄器完成來(lái)自代理的提交操作的處理的流程圖;以及圖4B是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的不同處理的流程圖,記錄器實(shí)用程序通過(guò)該不同處理與代理進(jìn)行協(xié)調(diào)以完成更有效的數(shù)據(jù)提交處理。
具體實(shí)施例方式
本發(fā)明提供了這樣的一種方法、計(jì)算機(jī)程序產(chǎn)品、以及數(shù)據(jù)庫(kù)管理系統(tǒng),其用于通過(guò)從數(shù)據(jù)庫(kù)(DB)記錄器中除去代理通知要求,并且無(wú)需用于向每個(gè)等待代理提供代理可繼續(xù)其各自處理這樣的通知的等待時(shí)間即可允許DB記錄器進(jìn)行下一提交處理,而基本上減少了數(shù)據(jù)庫(kù)(DB)日志記錄處理的等待時(shí)間。當(dāng)代理提交了對(duì)數(shù)據(jù)庫(kù)的永久存儲(chǔ)設(shè)備的改變時(shí),用于對(duì)永久存儲(chǔ)設(shè)備執(zhí)行更新的記錄器接收該請(qǐng)求。記錄器對(duì)等待提交處理完成的代理的列表進(jìn)行編譯,并且將其提供給下一提交代理。一旦提交處理完成,則下一提交代理就向等待代理通知它們可繼續(xù)進(jìn)行其各自處理。記錄器不再負(fù)責(zé)執(zhí)行該通知,并且能夠立即進(jìn)行對(duì)永久存儲(chǔ)器的下一更新,而不會(huì)利用用于向等待代理通知先前提交處理的完成的相當(dāng)大的時(shí)間量。
根據(jù)本發(fā)明的一個(gè)方面,提供了這樣一種數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),該數(shù)據(jù)庫(kù)管理系統(tǒng)包括記錄器實(shí)用程序和與對(duì)數(shù)據(jù)庫(kù)的永久存儲(chǔ)設(shè)備進(jìn)行訪問和更新的多個(gè)客戶機(jī)相關(guān)聯(lián)的多個(gè)代理。DBMS包括用于代表代理完成對(duì)永久(或持久性)存儲(chǔ)設(shè)備的數(shù)據(jù)提交操作的記錄器。DBMS還包括用于表示進(jìn)行或完成提交處理的時(shí)間的標(biāo)志。當(dāng)?shù)谝淮韺⒁蝗罩居涗浀臄?shù)據(jù)/工作提交給永久存儲(chǔ)設(shè)備時(shí),使一個(gè)或多個(gè)客戶機(jī)(或代理)進(jìn)行等待(即停止數(shù)據(jù)庫(kù)之內(nèi)的處理),直到接收到用于表示記錄器已完成提交處理的信號(hào)為止。
向順序排對(duì)的、希望完成下一提交處理的第二代理提供等待代理的列表以便代表記錄器進(jìn)行通知。當(dāng)記錄器完成提交處理時(shí),第二代理開始通知處理,第二代理通過(guò)該通知處理向所有等待代理通知它們可以繼續(xù)進(jìn)行其接下來(lái)的事務(wù)(一個(gè)或多個(gè))。與第二代理進(jìn)行該通知同時(shí)地,記錄器開始第二代理的提交處理。當(dāng)?shù)诙硪呀Y(jié)束該通知時(shí),第二代理等待記錄器將第二代理的處理的數(shù)據(jù)寫入(日志記錄)到永久存儲(chǔ)設(shè)備(如果仍未完成的話)。在一種實(shí)現(xiàn)方式中,記錄器每次提交一個(gè)緩沖器,并且因此,在第二代理完成該通知的同時(shí),記錄器對(duì)下一緩沖器的工作情況進(jìn)行計(jì)算與處理,由此可使記錄器的吞吐量增加。
現(xiàn)在圖1,圖1說(shuō)明了在其內(nèi)可以有利地實(shí)現(xiàn)本發(fā)明的特征的示意性聯(lián)網(wǎng)數(shù)據(jù)庫(kù)環(huán)境。如圖所示,聯(lián)網(wǎng)數(shù)據(jù)庫(kù)環(huán)境100包括與數(shù)據(jù)庫(kù)(DB)服務(wù)器115相關(guān)聯(lián)的永久存儲(chǔ)設(shè)備110(在這里可互換地稱為數(shù)據(jù)庫(kù)、盤存儲(chǔ)介質(zhì)、和/或持久性存儲(chǔ)設(shè)備)。本領(lǐng)域技術(shù)人員應(yīng)該理解的是,在這里所描述的數(shù)據(jù)庫(kù)是指諸如盤這樣的可靠的永久存儲(chǔ)設(shè)備。因此,為了說(shuō)明起見,將可靠的存儲(chǔ)設(shè)備描述為盤存儲(chǔ)介質(zhì),然而本發(fā)明可適用于具有不同類型/形式的可靠存儲(chǔ)設(shè)備的數(shù)據(jù)庫(kù)。
多個(gè)客戶機(jī)105通過(guò)網(wǎng)絡(luò)接口/主干線130與DB服務(wù)器115相連,每個(gè)客戶機(jī)105被假定為可通信地與數(shù)據(jù)庫(kù)110相耦合并且提供或響應(yīng)于對(duì)數(shù)據(jù)庫(kù)110的內(nèi)容進(jìn)行修改的處理。如圖所示,分別由參考標(biāo)記105a、105b、105n所表示的客戶機(jī)中的每一個(gè)均具有在DB服務(wù)器115上執(zhí)行的DBMS之內(nèi)的相應(yīng)代理處理118a、118b、118n??蛻魴C(jī)105可以是單處理器或多處理器計(jì)算機(jī)、工作站、手持便攜式信息設(shè)備、或者計(jì)算機(jī)網(wǎng)絡(luò)。客戶機(jī)105還可以是彼此相似或彼此不同的。
在一個(gè)實(shí)施例中,網(wǎng)絡(luò)接口/主干線130與附連的設(shè)備一起表示廣域網(wǎng)(諸如互聯(lián)網(wǎng)或萬(wàn)維網(wǎng)(WWW)),而在另一實(shí)施例中,網(wǎng)絡(luò)接口/主干線130與附連的設(shè)備可以表示局域網(wǎng)(LAN)。此外,網(wǎng)絡(luò)接口/主干線130可以包括無(wú)線鏈路、電話通信、無(wú)線電通信、和/或其他通信機(jī)制。
聯(lián)網(wǎng)數(shù)據(jù)庫(kù)系統(tǒng)100還可以包括與網(wǎng)絡(luò)130相連的資源128。資源128可以包括存儲(chǔ)介質(zhì)、數(shù)據(jù)庫(kù)、XML(可擴(kuò)展的標(biāo)記語(yǔ)言)文檔集合、諸如LDAP(輕量級(jí)目錄訪問協(xié)議)這樣的目錄服務(wù)服務(wù)器、以及后端系統(tǒng)。在一些實(shí)施例中,將數(shù)據(jù)存儲(chǔ)到多個(gè)數(shù)據(jù)庫(kù)中。DB服務(wù)器115與數(shù)據(jù)庫(kù)110和資源128之間的接口可以是LAN、互聯(lián)網(wǎng)、或者專用接口或者它們的組合。DB服務(wù)器115和/或客戶機(jī)124通過(guò)DB服務(wù)器115訪問數(shù)據(jù)庫(kù)110和資源128。如所說(shuō)明的,DB服務(wù)器115、客戶機(jī)105、數(shù)據(jù)庫(kù)110、以及資源128中的每一個(gè)彼此距離很遠(yuǎn),然而本發(fā)明也可適用于其中部件彼此位于本地這樣的配置。僅僅為了說(shuō)明起見,提供了上面所描述(和說(shuō)明)的聯(lián)網(wǎng)數(shù)據(jù)庫(kù)系統(tǒng)100的配置以及下面所描述的DB服務(wù)器(圖2和3),并且它們并不是用于對(duì)本發(fā)明的范圍進(jìn)行任何限制,本領(lǐng)域普通技術(shù)人員可從對(duì)以下詳細(xì)說(shuō)明的閱讀中得知本發(fā)明的范圍。
根據(jù)該說(shuō)明性實(shí)施例,DB服務(wù)器115是用于執(zhí)行下述軟件實(shí)用程序的數(shù)據(jù)處理系統(tǒng),所述軟件實(shí)用程序用于提供對(duì)數(shù)據(jù)庫(kù)110的訪問及控制??蓪B服務(wù)器115設(shè)置成具有若干互連的服務(wù)器設(shè)備/部件的分布式系統(tǒng)。DB服務(wù)器115包括數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),該數(shù)據(jù)庫(kù)管理系統(tǒng)120在一個(gè)實(shí)施例中可以是諸如作為國(guó)際商業(yè)機(jī)器公司(IBMTM)的產(chǎn)品的DB2TM這樣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。在DB服務(wù)器115所提供的且與數(shù)據(jù)庫(kù)110相關(guān)聯(lián)的軟件實(shí)用程序中,存在主要作為代表客戶機(jī)105進(jìn)行操作的代理118的多個(gè)處理。該處理的實(shí)際數(shù)目的范圍從幾百至幾千,并且每個(gè)處理代表多個(gè)客戶機(jī)105之一進(jìn)行操作。在這里將該處理之一稱為記錄器實(shí)用程序(或簡(jiǎn)稱為“記錄器”)125,該記錄器實(shí)用程序執(zhí)行若干任務(wù),所述任務(wù)包括將數(shù)據(jù)庫(kù)內(nèi)所出現(xiàn)的每個(gè)事務(wù)記錄/日志記錄到數(shù)據(jù)庫(kù)110之內(nèi)的永久存儲(chǔ)設(shè)備中,以及提供何時(shí)已將來(lái)自代理提交處理的數(shù)據(jù)存儲(chǔ)到永久存儲(chǔ)設(shè)備這樣的通知。
現(xiàn)在參考圖2,圖2示出了數(shù)據(jù)處理系統(tǒng)200,為簡(jiǎn)單起見,假設(shè)該數(shù)據(jù)處理系統(tǒng)200是典型的DB服務(wù)器115,并且因此可互換地將其描述為DB服務(wù)器115。值得注意的是,當(dāng)客戶機(jī)105是數(shù)據(jù)處理系統(tǒng)時(shí),DB服務(wù)器115的許多基本硬件部件可以與客戶機(jī)105的許多基本硬件部件相似。然而,如這里所描述的,在允許增強(qiáng)型DBMS的功能特征的DB服務(wù)器115之內(nèi)提供了另外的DBMS軟件。因此,DB服務(wù)器200包括系統(tǒng)總線201,其與處理器202、存儲(chǔ)器204、以及輸入/輸出(I/O)控制器205相耦合。I/O控制器205提供對(duì)于包括顯示設(shè)備206以及諸如鍵盤和指示設(shè)備(例如鼠標(biāo))這樣的用戶輸入設(shè)備208在內(nèi)的若干I/O設(shè)備所需的控制。
DB服務(wù)器200還包括網(wǎng)絡(luò)接口設(shè)備(NID)222,該網(wǎng)絡(luò)接口設(shè)備提供了用于與經(jīng)由網(wǎng)絡(luò)接口/主干線130、通過(guò)網(wǎng)絡(luò)相連的網(wǎng)絡(luò)設(shè)備(例如客戶機(jī)105和/或數(shù)據(jù)庫(kù)110)進(jìn)行通信的接口。DB服務(wù)器200進(jìn)一步包括被描述為存儲(chǔ)在存儲(chǔ)器204之內(nèi)并且每一個(gè)運(yùn)行在處理器202上(即由處理器202執(zhí)行)的、操作系統(tǒng)(OS)210、數(shù)據(jù)庫(kù)實(shí)用程序(增強(qiáng)型DBMS)212、以及其他應(yīng)用程序214。當(dāng)由處理器執(zhí)行時(shí),增強(qiáng)型DBMS212提供了在這里所描述的各種功能。如所描述的,存儲(chǔ)器204包括隨機(jī)存取存儲(chǔ)器(“RAM”)216和只讀存儲(chǔ)器(“ROM”)218部件。為了完成DB服務(wù)器200之內(nèi)的本地化的數(shù)據(jù)庫(kù)功能,DB服務(wù)器200還包括通過(guò)I/O CC(或者,在另一實(shí)施例中,通過(guò)存儲(chǔ)控制器)相連的硬盤220。硬盤220可以是獨(dú)立磁盤冗余陣列(RAID)系統(tǒng)。
現(xiàn)在參考圖3,圖3說(shuō)明了根據(jù)在這里所描述的新穎性特征所設(shè)計(jì)的增強(qiáng)型數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)212的一個(gè)實(shí)施例。箭頭表示部件/實(shí)用程序之間的數(shù)據(jù)/信息的方向流。增強(qiáng)型DBMS 212駐留在DB服務(wù)器115中,該DB服務(wù)器115通過(guò)網(wǎng)絡(luò)主干線130與客戶機(jī)105相連。增強(qiáng)型DBMS(或者DB實(shí)用程序)212進(jìn)一步與在其內(nèi)存儲(chǔ)永久日志336和存儲(chǔ)日志緩沖器338的永久/持久性海量存儲(chǔ)盤110(例如,硬盤或固定盤、可移除的盤或軟盤、光盤、磁光盤、和/或閃速存儲(chǔ)器)相耦合。在一個(gè)實(shí)施例中,增強(qiáng)型DBMS 212是諸如來(lái)自IBMTM的DB2TM產(chǎn)品這樣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。
增強(qiáng)型DBMS 212包括用于接收客戶機(jī)請(qǐng)求并對(duì)其進(jìn)行處理的SQL編譯器332。增強(qiáng)型DBMS 212還包括記錄器實(shí)用程序325,該記錄器實(shí)用程序325對(duì)包括有多個(gè)對(duì)數(shù)據(jù)庫(kù)310做出的改變的日志記錄的日志進(jìn)行維護(hù)和管理(336,338)。記錄器實(shí)用程序125還提供并維護(hù)兩個(gè)列表,即當(dāng)前列表350和先前列表355。在下面對(duì)這兩個(gè)列表的功能進(jìn)行了更詳細(xì)的描述。記錄器實(shí)用程序125還包括用于確定何時(shí)進(jìn)行提交處理以及何時(shí)完成提交處理的完成標(biāo)志360。完成標(biāo)志360可以是單個(gè)位寄存器,該單個(gè)位寄存器具有用于表示正在進(jìn)行提交處理(還未完成)的第一值(例如1)、以及用于表示已完成提交處理的第二值(例如0)。應(yīng)該注意的是,僅僅為了說(shuō)明性的目的,描述了被說(shuō)明和描述為相對(duì)于其他部件而言位于某些配置之內(nèi)或與其相關(guān)的部件。要實(shí)現(xiàn)本發(fā)明所提供的功能,不要求增強(qiáng)型DBMS 212的各種部件具有特定的定向/配置。
DBMS 320可以接收來(lái)自多個(gè)客戶機(jī)105的請(qǐng)求并同時(shí)對(duì)其進(jìn)行處理。在RDBMS實(shí)施例中,客戶機(jī)105按照SQL語(yǔ)句的形式請(qǐng)求數(shù)據(jù)庫(kù)操作。對(duì)于提交到數(shù)據(jù)庫(kù)310的每個(gè)改變而言,記錄器實(shí)用程序125創(chuàng)建用于描述該改變的日志記錄。日志記錄包括存儲(chǔ)在日志緩沖器338中的臨時(shí)部分以及存儲(chǔ)在盤310上的永久日志306中的永久部分。日志緩沖器338包括具有固定大小或預(yù)定大小的環(huán)形緩沖器。
現(xiàn)在參考圖4A和4B,圖4A和4B是示出了根據(jù)本發(fā)明所述實(shí)施例的功能特征、當(dāng)記錄器完成了代理的數(shù)據(jù)提交時(shí)由各種功能塊(圖2-3內(nèi)所描述的功能塊)所執(zhí)行的處理的流程圖。當(dāng)代理118對(duì)數(shù)據(jù)庫(kù)110做出改變時(shí),首先將該改變記錄到日志緩沖器338中。如圖4A所示,當(dāng)代理執(zhí)行提交時(shí)(步驟402),代理通過(guò)調(diào)用線程等待處理而中止操作(步驟404),其中所述線程等待處理迫使其他代理進(jìn)行等待直到記錄器125已將數(shù)據(jù)寫入到永久存儲(chǔ)設(shè)備336中為止。記錄器125連續(xù)地掃描日志緩沖器205,以查找要寫入到永久存儲(chǔ)設(shè)備336中的數(shù)據(jù)的滿緩沖器(步驟406)。記錄器125還產(chǎn)生/匯聚(pool)等待將緩沖器寫入到永久存儲(chǔ)設(shè)備中的代理的列表,并且將該列表存儲(chǔ)為當(dāng)前列表350(步驟408)。
如說(shuō)明性實(shí)施例中所示的,記錄器125維護(hù)當(dāng)前列表350和先前列表355(即要通知提交處理完成的代理的列表)這兩個(gè)(2)不同列表。在說(shuō)明性實(shí)施例中,一旦記錄器125完成當(dāng)前列表350,則記錄器125就將當(dāng)前列表350傳送到等待完成提交處理的下一代理(步驟410)。記錄器125接下來(lái)確定是否存在可用于寫入的數(shù)據(jù)的滿緩沖器(步驟412)。如果不存在,則記錄器繼續(xù)對(duì)滿緩沖器進(jìn)行掃描/監(jiān)控。
當(dāng)識(shí)別出滿緩沖器時(shí),記錄器125計(jì)算滿緩沖器之內(nèi)的頁(yè)面的校驗(yàn)和,并且將該數(shù)據(jù)寫入到盤中(步驟414)。記錄器125接下來(lái)確定何時(shí)完成寫入操作(步驟416)。在記錄器125確保寫入操作已完成之后(即頁(yè)面已在盤115上),記錄器125對(duì)完成標(biāo)志進(jìn)行更新,以便向下一代理表明先前提交處理已完成(步驟418)。此后,記錄器將當(dāng)前列表350重命名為先前列表355(步驟420),并且轉(zhuǎn)到對(duì)所接收到的下一提交請(qǐng)求進(jìn)行處理(步驟422)。
根據(jù)一個(gè)實(shí)施例,如圖4B所描述的,在調(diào)用線程等待之前,將要調(diào)用線程等待以中止操作(步驟452)的下一代理自動(dòng)地檢查完成標(biāo)志(步驟454)。如果設(shè)置了該標(biāo)志(例如,1表示先前提交已完成),那么該代理將標(biāo)志自動(dòng)地改變(例如,變?yōu)?),以表示正在進(jìn)行新的提交處理(例如,記錄器忙)(步驟456)。此后,該代理獲得當(dāng)前列表的所有權(quán),并且將該列表拷貝到其本地堆棧(步驟458)。當(dāng)所述代理完成了對(duì)該列表的拷貝時(shí),代理自動(dòng)地將標(biāo)志設(shè)置為空狀態(tài)(步驟460)。此后,代理正常地調(diào)用線程等待(步驟464),以等待繼續(xù)其事務(wù),直到它接收到數(shù)據(jù)已位于永久存儲(chǔ)設(shè)備336上這樣的確認(rèn)(步驟466)為止。代理循環(huán)通過(guò)記錄在當(dāng)前列表之內(nèi)的代理列表以通知這些代理提交操作成功。這個(gè)代理提供的通知(代替?zhèn)鹘y(tǒng)實(shí)現(xiàn)方式中的記錄器提供的通知)向代理通知它們能夠返回執(zhí)行更多的事務(wù),并且一旦先前提交操作完成,就釋放記錄器以執(zhí)行另一提交操作。
作為最后的問題,重要的是,雖然已經(jīng)在安裝有管理軟件的完全發(fā)揮功能的計(jì)算機(jī)系統(tǒng)的環(huán)境中對(duì)本發(fā)明的說(shuō)明性實(shí)施例進(jìn)行了描述并將繼續(xù)對(duì)其進(jìn)行描述,但是,本領(lǐng)域技術(shù)人員應(yīng)該理解的是,可將本發(fā)明的說(shuō)明性實(shí)施例的軟件方面作為各種形式的程序產(chǎn)品進(jìn)行分發(fā),并且可同樣地應(yīng)用本發(fā)明的說(shuō)明性實(shí)施例,而與實(shí)際上用來(lái)執(zhí)行該分發(fā)的特定類型的信號(hào)承載介質(zhì)無(wú)關(guān)。信號(hào)承載介質(zhì)的示例包括諸如軟盤、硬盤驅(qū)動(dòng)器、CD ROM這樣的可記錄型介質(zhì),以及諸如數(shù)模通信鏈路這樣的傳輸型介質(zhì)。
雖然已經(jīng)參考優(yōu)選實(shí)施例示出和描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該明白的是,在不脫離本發(fā)明的精神和范圍的情況下可對(duì)其形式和細(xì)節(jié)做出各種變化。
權(quán)利要求
1.一種計(jì)算機(jī)數(shù)據(jù)庫(kù)(DB)系統(tǒng),包括數(shù)據(jù)庫(kù)(DB)服務(wù)器,該數(shù)據(jù)庫(kù)服務(wù)器包括用于通過(guò)記錄器實(shí)用程序控制對(duì)永久存儲(chǔ)設(shè)備的訪問的增強(qiáng)型DB管理系統(tǒng)(DBMS),所述DB服務(wù)器還包括用于接收從多個(gè)客戶機(jī)之一所發(fā)出的、對(duì)永久存儲(chǔ)設(shè)備之內(nèi)的數(shù)據(jù)進(jìn)行更新的提交請(qǐng)求的設(shè)備,所述提交請(qǐng)求由DB服務(wù)器之內(nèi)的代理來(lái)執(zhí)行;以及用于允許完成對(duì)永久存儲(chǔ)設(shè)備執(zhí)行的與提交請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)操作的裝置,其中,等待完成的代理的通知作為后臺(tái)處理執(zhí)行,而不會(huì)由記錄器實(shí)用程序引起執(zhí)行所述通知的等待時(shí)間,其中記錄器實(shí)用程序能夠在其本身不提供所述通知的情況下開始下一提交請(qǐng)求對(duì)永久存儲(chǔ)設(shè)備的下一存儲(chǔ)。
2.根據(jù)權(quán)利要求1的計(jì)算機(jī)DB系統(tǒng),進(jìn)一步包括用于當(dāng)發(fā)出提交請(qǐng)求時(shí)執(zhí)行線程等待處理的裝置,其中,要求完成先前發(fā)出的提交請(qǐng)求的代理中止處理,直到接收到已將與該提交請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)到永久存儲(chǔ)設(shè)備中的通知為止;用于產(chǎn)生正等待完成對(duì)提交請(qǐng)求的數(shù)據(jù)存儲(chǔ)的代理的當(dāng)前列表的裝置;用于當(dāng)完成數(shù)據(jù)存儲(chǔ)時(shí)使請(qǐng)求代理通知當(dāng)前列表之內(nèi)的等待代理的裝置。
3.根據(jù)權(quán)利要求2的計(jì)算機(jī)DB系統(tǒng),進(jìn)一步包括用于當(dāng)完成數(shù)據(jù)存儲(chǔ)時(shí)將當(dāng)前列表重命名為先前列表的裝置;用于隨后為記錄器正在處理的下一提交請(qǐng)求產(chǎn)生新的當(dāng)前列表的裝置。
4.根據(jù)權(quán)利要求1的計(jì)算機(jī)DB系統(tǒng),其中,所述數(shù)據(jù)庫(kù)進(jìn)一步包括用于臨時(shí)存儲(chǔ)數(shù)據(jù)的日志緩沖器,其中所述系統(tǒng)進(jìn)一步包括用于僅當(dāng)日志緩沖器滿時(shí)才將數(shù)據(jù)存儲(chǔ)在日志緩沖器內(nèi)的裝置;以及用于在日志緩沖器變得充滿了要存儲(chǔ)的數(shù)據(jù)時(shí)持續(xù)地對(duì)等待代理的當(dāng)前列表進(jìn)行更新的裝置。
5.根據(jù)權(quán)利要求1的計(jì)算機(jī)DB系統(tǒng),進(jìn)一步包括跟蹤機(jī)制,用于表明何時(shí)已將提交請(qǐng)求的數(shù)據(jù)存儲(chǔ)到永久存儲(chǔ)設(shè)備中;用于將跟蹤機(jī)制設(shè)置為表示還未存儲(chǔ)數(shù)據(jù)的第一狀態(tài)的裝置;以及用于將跟蹤機(jī)制設(shè)置為表示已存儲(chǔ)了數(shù)據(jù)的第二狀態(tài)的裝置。
6.根據(jù)權(quán)利要求5的計(jì)算機(jī)DB系統(tǒng),進(jìn)一步包括當(dāng)跟蹤機(jī)制改變?yōu)榈诙顟B(tài)時(shí)自動(dòng)地開始由請(qǐng)求代理進(jìn)行的數(shù)據(jù)存儲(chǔ)完成通知的裝置,其中,每個(gè)等待代理從請(qǐng)求代理接收該完成通知。
7.根據(jù)權(quán)利要求1的計(jì)算機(jī)DB系統(tǒng),進(jìn)一步包括第一寄存器,用于存儲(chǔ)等待完成提交請(qǐng)求的代理的當(dāng)前列表;第二寄存器,用于存儲(chǔ)等待完成先前提交請(qǐng)求的代理的先前列表;用于在完成了對(duì)提交請(qǐng)求的數(shù)據(jù)存儲(chǔ)之后將代理的當(dāng)前列表存儲(chǔ)為代理的先前列表的裝置,其中,當(dāng)前列表被保留用于存儲(chǔ)等待完成下一提交請(qǐng)求的代理;以及用于使發(fā)出先前提交請(qǐng)求的代理向在代理的先前列表之內(nèi)的每個(gè)代理通知完成了先前提交請(qǐng)求的裝置。
8.一種計(jì)算機(jī)數(shù)據(jù)庫(kù)(DB)系統(tǒng)中的方法,該計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng)包括具有增強(qiáng)型DB管理系統(tǒng)(DBMS)的數(shù)據(jù)庫(kù)(DB)服務(wù)器,該方法包括通過(guò)記錄器實(shí)用程序控制對(duì)永久數(shù)據(jù)存儲(chǔ)設(shè)備的訪問,其中,只有記錄器被允許根據(jù)從下述一個(gè)或多個(gè)代理所接收到的請(qǐng)求來(lái)對(duì)永久數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行更新,其中所述一個(gè)或多個(gè)代理與請(qǐng)求對(duì)永久數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行更新的一個(gè)或多個(gè)客戶機(jī)相關(guān)聯(lián);從客戶機(jī)接收用于將數(shù)據(jù)存儲(chǔ)在永久數(shù)據(jù)存儲(chǔ)設(shè)備內(nèi)的提交請(qǐng)求;在特定代理恢復(fù)處理之前,產(chǎn)生等待完成在永久數(shù)據(jù)存儲(chǔ)設(shè)備內(nèi)的存儲(chǔ)的代理的當(dāng)前列表;通過(guò)記錄器完成所述數(shù)據(jù)在永久數(shù)據(jù)存儲(chǔ)設(shè)備中的存儲(chǔ);立即釋放所述記錄器以對(duì)下一提交請(qǐng)求進(jìn)行處理,而無(wú)需記錄器通知在等待完成所述存儲(chǔ)的代理的列表之內(nèi)的代理。
9.根據(jù)權(quán)利要求8的方法,進(jìn)一步包括當(dāng)完成數(shù)據(jù)存儲(chǔ)時(shí),將當(dāng)前列表重命名為先前列表;當(dāng)完成所述數(shù)據(jù)的存儲(chǔ)時(shí),觸發(fā)請(qǐng)求代理以便通知在代理的當(dāng)前列表之內(nèi)的每個(gè)代理;并且隨后為記錄器正在處理的下一提交請(qǐng)求產(chǎn)生新的當(dāng)前列表。
10.根據(jù)權(quán)利要求8的方法,進(jìn)一步包括當(dāng)發(fā)出提交請(qǐng)求時(shí),執(zhí)行線程等待處理,其中,要求完成先前所發(fā)出的提交請(qǐng)求的代理中止處理,直到接收到已將與該提交請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)到永久存儲(chǔ)設(shè)備中的通知為止。
11.根據(jù)權(quán)利要求8的方法,其中,所述數(shù)據(jù)庫(kù)進(jìn)一步包括用于臨時(shí)存儲(chǔ)數(shù)據(jù)的日志緩沖器,其中所述方法進(jìn)一步包括僅當(dāng)日志緩沖器滿時(shí)才將數(shù)據(jù)存儲(chǔ)在日志緩沖器內(nèi);并且在日志緩沖器變得充滿了要存儲(chǔ)的數(shù)據(jù)時(shí),持續(xù)地對(duì)等待代理的當(dāng)前列表進(jìn)行更新。
12.根據(jù)權(quán)利要求11的方法,其中,DBMS包括用于表明何時(shí)已將提交請(qǐng)求的數(shù)據(jù)存儲(chǔ)到永久存儲(chǔ)設(shè)備的跟蹤機(jī)制,所述方法包括將跟蹤機(jī)制設(shè)置為用于表示還未存儲(chǔ)數(shù)據(jù)的第一狀態(tài);以及將跟蹤機(jī)制設(shè)置為用于表示已存儲(chǔ)了數(shù)據(jù)的第二狀態(tài)。
13.根據(jù)權(quán)利要求12的方法,進(jìn)一步包括當(dāng)跟蹤機(jī)制改變?yōu)榈诙顟B(tài)時(shí),自動(dòng)地開始由請(qǐng)求代理進(jìn)行的數(shù)據(jù)存儲(chǔ)完成通知,其中,每個(gè)等待代理從請(qǐng)求代理接收該完成通知。
14.根據(jù)權(quán)利要求8的方法,所述DBMS進(jìn)一步包括第一寄存器,用于存儲(chǔ)等待完成提交請(qǐng)求的代理的當(dāng)前列表;以及第二寄存器,用于存儲(chǔ)等待完成先前提交請(qǐng)求的代理的先前列表,所述方法包括在完成了對(duì)提交請(qǐng)求的數(shù)據(jù)存儲(chǔ)之后,將代理的當(dāng)前列表存儲(chǔ)為代理的先前列表,其中,當(dāng)前列表被保留用于存儲(chǔ)等待完成下一提交請(qǐng)求的代理;并且通過(guò)發(fā)出先前提交請(qǐng)求的代理向在代理的先前列表之內(nèi)的每個(gè)代理通知完成了先前提交請(qǐng)求。
全文摘要
公開了這樣一種方法,其用于通過(guò)從數(shù)據(jù)庫(kù)(DB)記錄器中除去代理通知要求,并且無(wú)需用于向每個(gè)等待代理提供代理可繼續(xù)進(jìn)行其各自處理這樣的通知的等待時(shí)間即可允許DB記錄器進(jìn)行下一提交處理,而基本上減少了數(shù)據(jù)庫(kù)(DB)日志記錄處理的等待時(shí)間。當(dāng)代理提交了對(duì)數(shù)據(jù)庫(kù)的永久存儲(chǔ)設(shè)備的改變時(shí),用于對(duì)永久存儲(chǔ)設(shè)備執(zhí)行更新的記錄器接收該請(qǐng)求。記錄器對(duì)等待提交處理完成的代理的列表進(jìn)行編譯。將該代理列表提供給下一提交代理。下一提交代理然后向等待代理通知它們可繼續(xù)進(jìn)行其各自的處理。記錄器可以立即進(jìn)行對(duì)永久存儲(chǔ)器的下一更新,而不會(huì)利用用于向等待代理進(jìn)行通知的相當(dāng)大的時(shí)間量。
文檔編號(hào)G06F17/30GK1955967SQ20061014299
公開日2007年5月2日 申請(qǐng)日期2006年10月26日 優(yōu)先權(quán)日2005年10月27日
發(fā)明者戴維·威廉·梅哈菲, 詹姆斯·威廉·范·弗里特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司