两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

主數(shù)據(jù)庫系統(tǒng)、復(fù)制其數(shù)據(jù)的方法以及復(fù)制數(shù)據(jù)庫系統(tǒng)的制作方法

文檔序號:6337646閱讀:233來源:國知局
專利名稱:主數(shù)據(jù)庫系統(tǒng)、復(fù)制其數(shù)據(jù)的方法以及復(fù)制數(shù)據(jù)庫系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及主數(shù)據(jù)庫系統(tǒng),復(fù)制數(shù)據(jù)庫系統(tǒng)以及復(fù)制主數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)項的方 法。
背景技術(shù)
數(shù)據(jù)庫系統(tǒng)常被用于存儲、修改和查詢現(xiàn)代計算環(huán)境中使用的大量數(shù)據(jù)。,這種數(shù) 據(jù)庫系統(tǒng)中例如由硬件或網(wǎng)絡(luò)故障引起的意外的系統(tǒng)崩潰或是不一致性,會導致計算環(huán)境 在長時間內(nèi)處于系統(tǒng)故障狀態(tài),這是由于計算環(huán)境操作中的數(shù)據(jù)可能丟失或損壞。因此,數(shù) 據(jù)庫系統(tǒng)的可靠性和可用性就至關(guān)重要。為此,除了處理存儲、修改和查詢數(shù)據(jù)的請求(事 務(wù)處理)外,數(shù)據(jù)庫系統(tǒng)可以在一個或多個復(fù)制數(shù)據(jù)庫系統(tǒng)中復(fù)制它的數(shù)據(jù)(復(fù)制處理)。
一旦(主)數(shù)據(jù)庫系統(tǒng)發(fā)生故障,丟失的數(shù)據(jù)可以從一個或多個復(fù)制的數(shù)據(jù)庫系 統(tǒng)恢復(fù),即復(fù)制數(shù)據(jù)庫系統(tǒng)可以作為待命的備份存儲器。在這個故障-恢復(fù)用例中,事務(wù)處 理通常只由主數(shù)據(jù)庫系統(tǒng)執(zhí)行,而復(fù)制數(shù)據(jù)庫系統(tǒng)只參與復(fù)制處理。
然而,復(fù)制數(shù)據(jù)庫系統(tǒng)同樣可以被用于其他場景,例如用于數(shù)據(jù)的移動使用。在 此,復(fù)制數(shù)據(jù)庫系統(tǒng)可以被設(shè)置于諸如筆記本電腦或者智能電話之類的移動設(shè)備上,并且 以有規(guī)律的間隔與中央服務(wù)器上的主數(shù)據(jù)庫系統(tǒng)同步。在該用例中,為了提高性能,事務(wù)處 理可以直接在復(fù)制數(shù)據(jù)庫系統(tǒng)上執(zhí)行。
另外,使用復(fù)制數(shù)據(jù)庫系統(tǒng)的另一個重要實例是為了負載平衡,即,同時由主數(shù)據(jù) 庫系統(tǒng)和復(fù)制數(shù)據(jù)庫系統(tǒng)執(zhí)行事務(wù)處理以提高事務(wù)處理的性能。
但是,如果復(fù)制數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)在事務(wù)處理期間被查詢,而這時正在進行復(fù)制 處理,那么這次查詢就可能獲得不一致的結(jié)果。這是因為查詢處理可以取回中間數(shù)據(jù),而這 些數(shù)據(jù)可能在復(fù)制處理過程中改變(該現(xiàn)象叫做“臟數(shù)據(jù)讀取”)。為了克服這個問題,一 種熟知的方法是只允許查詢處理和復(fù)制處理在不同的時隙執(zhí)行,從而保證了只有一致的數(shù) 據(jù)可以被查詢。然而,這種方法是以降低性能為代價的,因為查詢處理必須被推遲直到任何 的復(fù)制處理完成,這在負載平衡的情形中是極其不利的。或者,為了更好的性能而允許同時 進行查詢處理和復(fù)制處理,卻是以一致性不能保證為代價的。
另外,在一些特定場景中,如下操作也是期望的不僅同時查詢主數(shù)據(jù)庫系統(tǒng)和復(fù) 制數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),而且允許同時修改存儲在主數(shù)據(jù)庫系統(tǒng)和復(fù)制數(shù)據(jù)庫系統(tǒng)中的不 同數(shù)據(jù)副本。這里,一個額外的問題是不同數(shù)據(jù)副本可能轉(zhuǎn)變?yōu)椴煌?、不一致的狀態(tài)。為 此,已知的方法是用復(fù)雜機制來探測和解決主數(shù)據(jù)庫系統(tǒng)和復(fù)制數(shù)據(jù)庫系統(tǒng)中的不一致數(shù) 據(jù)?;蛘撸綇?fù)制技術(shù)可以被用來從一開始就防止不一致數(shù)據(jù)的修改(比如,使用已知的 兩階段提交協(xié)議)。但是,這些方法的代價是由于沖突解決或同步復(fù)制的開銷而降低了性 能。
因此,本發(fā)明解決的技術(shù)問題是提供一種數(shù)據(jù)庫復(fù)制技術(shù),該技術(shù)允許高效、一致 的事務(wù)處理,從而可以至少部分解決以上闡述的已有技術(shù)的弊端。發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,一種按照權(quán)利要求1的復(fù)制主數(shù)據(jù)庫系統(tǒng)中的一個或多 個數(shù)據(jù)項的方法解決了上述問題,其中,所述方法包括由主數(shù)據(jù)庫系統(tǒng)執(zhí)行的如下步驟
a.提供復(fù)制數(shù)據(jù)給至少一個復(fù)制數(shù)據(jù)庫系統(tǒng),所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)使用 所述復(fù)制數(shù)據(jù)復(fù)制所述主數(shù)據(jù)庫系統(tǒng)的所述一個或多個數(shù)據(jù)項;以及
b.在步驟a發(fā)送的復(fù)制數(shù)據(jù)中添加鎖數(shù)據(jù),其中,所述鎖數(shù)據(jù)與所述一個或多個 數(shù)據(jù)項中的至少一個鎖相關(guān)。
相應(yīng)地,在步驟a中,由主數(shù)據(jù)庫系統(tǒng)提供的復(fù)制數(shù)據(jù)被至少一個復(fù)制數(shù)據(jù)庫系 統(tǒng)使用來復(fù)制所述主數(shù)據(jù)庫系統(tǒng)中的一個或多個數(shù)據(jù)項。因此,所述至少一個復(fù)制數(shù)據(jù)庫 能夠獲得所述主數(shù)據(jù)庫系統(tǒng)的所述一個或多個數(shù)據(jù)項的本地副本。為此,所述主數(shù)據(jù)庫系 統(tǒng)可以存儲所述復(fù)制數(shù)據(jù),并且所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)可以請求所存儲的復(fù)制數(shù) 據(jù)。另外,所述主數(shù)據(jù)庫系統(tǒng)在步驟a發(fā)送給所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的復(fù)制數(shù)據(jù)中 添加鎖數(shù)據(jù),其中,所述鎖數(shù)據(jù)與所述一個或多個數(shù)據(jù)項中的至少一個鎖相關(guān)。
這種鎖可以由所述主數(shù)據(jù)庫系統(tǒng)響應(yīng)于接收到事務(wù)而創(chuàng)建、修改、刪除和/或查 詢一個或多個數(shù)據(jù)項時被創(chuàng)建,并且,這種鎖通常在被所述主數(shù)據(jù)庫系統(tǒng)處理時用來限制 其他事務(wù)訪問所述一個或多個數(shù)據(jù)項。通過對發(fā)送到所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的所述 復(fù)制數(shù)據(jù)添加于這些鎖相關(guān)的鎖數(shù)據(jù),所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)還能夠根據(jù)接收的鎖 數(shù)據(jù)處理一個或多個事務(wù),并且優(yōu)選是與所述主數(shù)據(jù)庫系統(tǒng)執(zhí)行的任何復(fù)制處理和/或事 務(wù)處理同步。因此,可以保證所述事務(wù)能夠以一種高效且事務(wù)一致的方式被至少一個復(fù)制 數(shù)據(jù)庫系統(tǒng)處理,下面將會做進一步解釋。
在現(xiàn)有技術(shù)已知的同步復(fù)制技術(shù)中,所述主數(shù)據(jù)庫系統(tǒng)必須等待直到所發(fā)送的復(fù) 制數(shù)據(jù)被所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)所確認。換言之,所述主數(shù)據(jù)庫系統(tǒng)在所述至少一 個復(fù)制數(shù)據(jù)庫系統(tǒng)處理完所述復(fù)制數(shù)據(jù)之前不能對任何事務(wù)做進一步處理。本發(fā)明的不同 之處在于提出了一個異步復(fù)制技術(shù),即,所述主數(shù)據(jù)庫系統(tǒng)可以平行且獨立于所述復(fù)制處 理地執(zhí)行事務(wù)處理。這是因為,基于與被復(fù)制的所述一個或多個數(shù)據(jù)項相關(guān)的所接收到的 鎖數(shù)據(jù),所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)可以確保所述一致性。
由于鎖數(shù)據(jù)限制事務(wù)訪問一個或多個數(shù)據(jù)項,通過最小化從所述主數(shù)據(jù)庫系統(tǒng)傳 送到所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的鎖數(shù)據(jù)量,所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的效率可以 得到進一步的提高。換言之,傳送的鎖數(shù)據(jù)量應(yīng)該被減少到最低需求量。
相應(yīng)地,在本發(fā)明的一個方面中,只有當所述至少一個鎖被所述主數(shù)據(jù)庫系統(tǒng)接 收的一個更新事務(wù)請求時,所述鎖數(shù)據(jù)才可以被添加到步驟a提供的復(fù)制數(shù)據(jù)中。一個 更新事務(wù)是指創(chuàng)建、修改或刪除一個或多個數(shù)據(jù)項的事務(wù),與僅僅查詢一個或多個數(shù)據(jù)項 (沒有改變它們)的只讀事務(wù)相對。雖然兩種形式的事務(wù)都可以在一個或多個數(shù)據(jù)項上獲 得鎖,但是與只讀事務(wù)相關(guān)的鎖優(yōu)選不要添加到所述復(fù)制數(shù)據(jù)中。而且,由于所述至少一個 復(fù)制數(shù)據(jù)庫系統(tǒng)具有與有效的更新事務(wù)相關(guān)的鎖,所以所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)以事 務(wù)一致的方式進行的只讀事務(wù)處理可以得到保證。
另一方面中,只有在所述相關(guān)的至少一個鎖是排他鎖的前提下,所述鎖數(shù)據(jù)才可 以被添加到步驟a提供的復(fù)制數(shù)據(jù)中。相應(yīng)地,本發(fā)明支持不同類型的鎖,比如現(xiàn)有技術(shù)中 已知的排他鎖、共享鎖等等。但是,與共享鎖相關(guān)的鎖數(shù)據(jù)優(yōu)選不要添加到復(fù)制數(shù)據(jù)中,因為這種共享鎖不會引起與所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的處理之間的沖突。因此,傳送的 鎖數(shù)據(jù)量進一步最小化,從而既增加了所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)的效率也增加了所述 主數(shù)據(jù)庫系統(tǒng)的效率,因為它只需要處理最少需求量的復(fù)制數(shù)據(jù)。
根據(jù)本發(fā)明的另一方面,只有在與所述至少一個鎖相關(guān)的所述一個或多個數(shù)據(jù)項 在所述主數(shù)據(jù)庫系統(tǒng)處理一個更新事務(wù)的過程中被修改后,所述鎖數(shù)據(jù)才可以被添加到步 驟a提供的復(fù)制數(shù)據(jù)中。由于與一個或多個數(shù)據(jù)項相關(guān)的鎖在所述主數(shù)據(jù)庫系統(tǒng)處理事務(wù) 過程中不會被修改,因而不會導致在所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)中引起沖突,為了進一 步減少傳送的鎖數(shù)據(jù)量,這種鎖可以從所述傳送的復(fù)制數(shù)據(jù)中省略。
在另一個方面,如果支持同時查詢的至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)在所述主數(shù)據(jù)庫系 統(tǒng)中注冊,可以只執(zhí)行步驟b,在下面的具體描述中會進一步解釋。
本發(fā)明還涉及按照權(quán)利要求5所述的由復(fù)制數(shù)據(jù)庫系統(tǒng)復(fù)制主數(shù)據(jù)庫系統(tǒng)的一 個或多個數(shù)據(jù)項的方法,其中,該方法包括由復(fù)制數(shù)據(jù)庫系統(tǒng)執(zhí)行的如下步驟
a.從所述主數(shù)據(jù)庫系統(tǒng)接收復(fù)制數(shù)據(jù),并且根據(jù)所述復(fù)制數(shù)據(jù)復(fù)制所述主數(shù)據(jù)庫 系統(tǒng)的所述一個或多個數(shù)據(jù)項。
b.其中步驟a中接收到的所述復(fù)制數(shù)據(jù)包含與所述一個或多個數(shù)據(jù)項的至少一 個鎖相關(guān)的鎖數(shù)據(jù)。
相應(yīng)地,正如前面解釋過的,所述復(fù)制數(shù)據(jù)庫可以用接收到的鎖數(shù)據(jù)處理一個或 多個事務(wù),特別是只讀事務(wù),以便于所述一個或多個事務(wù)以事務(wù)一致的方式被處理,尤其是 與任何復(fù)制處理同時和/或獨立于所述主數(shù)據(jù)庫系統(tǒng)的任何事務(wù)處理。
另一方面,所述鎖數(shù)據(jù)可以與一個或多個數(shù)據(jù)項上的至少一個排他鎖相關(guān)聯(lián),至 少一個只讀事務(wù)可以請求所述一個或多個數(shù)據(jù)項上的一個第二鎖,并且所述方法包括推遲 所述至少一個只讀事務(wù)的處理直到所述至少一個排他鎖被所述復(fù)制數(shù)據(jù)庫系統(tǒng)釋放為止 的步驟。相應(yīng)地,在一個即將被用于讀取數(shù)據(jù)項的所述復(fù)制數(shù)據(jù)庫系統(tǒng)處理的只讀事務(wù)已 經(jīng)被排他鎖的情況下(比如復(fù)制事務(wù)正在進行中),所述只讀事務(wù)被強制等待直到所述排 他鎖被釋放(比如當所述復(fù)制事務(wù)結(jié)束時)。換言之,復(fù)制處理優(yōu)先于所述復(fù)制數(shù)據(jù)庫系統(tǒng) 的事務(wù)處理以保證優(yōu)選的整體性能。
根據(jù)本發(fā)明的另一個方面,所述復(fù)制數(shù)據(jù)庫系統(tǒng)可以為了復(fù)制一個或多個數(shù)據(jù)項 而請求第三鎖,其中,所述第三鎖可以已經(jīng)被所述至少一個只讀事務(wù)持有,并且所述方法可 以進一步包括強制所述至少一個只讀事務(wù)釋放所述第三鎖的步驟,比如通過所述至少一個 只讀事務(wù)的回滾。相應(yīng)地,當復(fù)制數(shù)據(jù)庫系統(tǒng)為了復(fù)制特定的數(shù)據(jù)項而想要獲得對其的鎖 時就會出現(xiàn)這樣的情況,因為所述數(shù)據(jù)項已經(jīng)被當前正在進行中的一個只讀事務(wù)鎖。特別 是,如果所述事務(wù)本身想要獲取一個已經(jīng)被所述復(fù)制數(shù)據(jù)庫系統(tǒng)持有的鎖,兩個實體中的 每一個都要等到另一個釋放相應(yīng)的鎖(一種被稱為“循環(huán)等待”或者“死鎖”的現(xiàn)象)。為 了解決這種情況,所述復(fù)制數(shù)據(jù)庫系統(tǒng)可以強制所述只讀事務(wù)通過回滾釋放所述鎖,從而 所述只讀事務(wù)可以在稍后被重啟。
總之,所述復(fù)制數(shù)據(jù)庫系統(tǒng)可以被有效地應(yīng)用于負載平衡,即與所述主數(shù)據(jù)庫系 統(tǒng)同時服務(wù)于只讀事務(wù)。
本發(fā)明進一步涉及一種主數(shù)據(jù)庫系統(tǒng),包括一個用于向至少一個復(fù)制數(shù)據(jù)庫系統(tǒng) 發(fā)送復(fù)制數(shù)據(jù)的主數(shù)據(jù)庫服務(wù)器,所述復(fù)制數(shù)據(jù)被所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)用來復(fù)制所述主數(shù)據(jù)庫系統(tǒng)中一個或多個數(shù)據(jù)項,其中,所述復(fù)制數(shù)據(jù)包含與所述一個或多個數(shù)據(jù) 項的至少一個鎖相關(guān)的鎖數(shù)據(jù)。
另外,提供了一種復(fù)制數(shù)據(jù)庫系統(tǒng),包括一個用于接收來自主數(shù)據(jù)庫系統(tǒng)的復(fù)制 數(shù)據(jù)和根據(jù)所述復(fù)制數(shù)據(jù)從所述主數(shù)據(jù)庫系統(tǒng)復(fù)制一個或多個數(shù)據(jù)項的復(fù)制數(shù)據(jù)庫服務(wù) 器,其中,所述復(fù)制數(shù)據(jù)包含與所述一個或多個數(shù)據(jù)項的至少一個鎖相關(guān)的鎖數(shù)據(jù)。
本發(fā)明的所述主數(shù)據(jù)庫系統(tǒng)和所述復(fù)制數(shù)據(jù)庫系統(tǒng)實施方式的進一步改進將會 在從屬權(quán)利要求中進一步定義。
本發(fā)明進一步涉及一種包括一個如前所述的主數(shù)據(jù)庫系統(tǒng)和至少一個復(fù)制數(shù)據(jù) 庫系統(tǒng)的系統(tǒng)。最后,本發(fā)明提供了一種包含執(zhí)行如上所述任何一種方法的指令的計算機程序。


在下面的詳細描述中,參考下面的附圖進一步說明本發(fā)明的當前優(yōu)選實施例
圖1 根據(jù)本發(fā)明的一個實施例的主數(shù)據(jù)庫系統(tǒng)和復(fù)制數(shù)據(jù)庫系統(tǒng)的示意概覽;
圖2 根據(jù)本發(fā)明的一個實施例的從鎖表條目創(chuàng)建的重做日志數(shù)據(jù)的示例;
圖3 根據(jù)本發(fā)明的一個實施例的當將在所述重做日志上創(chuàng)建更新數(shù)據(jù)時添加鎖 數(shù)據(jù)的流程圖4 根據(jù)本發(fā)明的一個實施例的當鎖被刪除時創(chuàng)建重做日志數(shù)據(jù)的流程圖5 根據(jù)本發(fā)明的一個實施例的在重做日志中存儲的數(shù)據(jù)的示例圖6 根據(jù)本發(fā)明的一個實施例的復(fù)制數(shù)據(jù)庫系統(tǒng)使用鎖數(shù)據(jù)的示意圖;以及
圖7 根據(jù)本發(fā)明的一個實施例的復(fù)制數(shù)據(jù)庫系統(tǒng)創(chuàng)建鎖數(shù)據(jù)的示意圖。
具體實施方式
現(xiàn)代數(shù)據(jù)庫系統(tǒng)通常用于處理由用戶和/或應(yīng)用發(fā)起的事務(wù),這些事務(wù)對保存在 所述數(shù)據(jù)庫系統(tǒng)中至少一個數(shù)據(jù)庫里的數(shù)據(jù)項進行操作。事務(wù)可以是用于向數(shù)據(jù)庫查詢特 定數(shù)據(jù)項的只讀事務(wù),或者是用于創(chuàng)建、修改和/或刪除數(shù)據(jù)庫中數(shù)據(jù)項的更新事務(wù)。事務(wù) 可以包括一個或多個單獨的步驟/操作。
現(xiàn)代數(shù)據(jù)庫一般設(shè)計用于保證已知的數(shù)據(jù)庫屬性ACID ( ‘原子性’,‘一致性’,‘隔 離性’和‘持續(xù)性,參考http //en. wikipedia. orR/wiki/ACID)。原子性是指保證要么事務(wù) 的所有步驟/操作被執(zhí)行,要么任何一個都不被執(zhí)行的數(shù)據(jù)庫系統(tǒng)的能力。一致性屬性保 證數(shù)據(jù)庫在事務(wù)開始前和事務(wù)結(jié)束后(無論成功與否)保持在一致的狀態(tài)。隔離性指的是 以下要求在給定事務(wù)期間其他步驟/操作無法訪問或者看到處于中間狀態(tài)的數(shù)據(jù)。最后, 持續(xù)性是指保證一旦發(fā)起事務(wù)的用戶被通知事務(wù)成功,事務(wù)將會持續(xù),即它不會被撤銷。
關(guān)于上述隔離性屬性,現(xiàn)有技術(shù)中已知按照特定的隔離級別來處理事務(wù)。參考 http //en. wikipedia. org/wiki/Isolation (database systems))。 t匕如,隔離級另1J ^可 串行化’說明所有的事務(wù)以完全隔離的方式發(fā)生,即,好像數(shù)據(jù)庫系統(tǒng)中的所有事務(wù)一個接 一個串行執(zhí)行。隔離級別‘讀取提交’說明不會阻止查詢?nèi)』氐臄?shù)據(jù)不會被其他事務(wù)修改 (可能修改取回的數(shù)據(jù))。隔離級別‘讀取未提交’指的是一個事務(wù)可以看到其他某個事務(wù) 作出的未提交的變化。
為了支持諸如上面示例的不同的隔離級別,數(shù)據(jù)庫系統(tǒng)可以分別為事務(wù)(和它們 的單獨步驟/操作,分別地)和/或發(fā)起它們的用戶/應(yīng)用提供獲得一個或多個數(shù)據(jù)項上 的鎖的能力。鎖通常限制其他事務(wù)訪問相應(yīng)的數(shù)據(jù)項,比如以排他鎖(即不允許其他事務(wù) 訪問所述數(shù)據(jù)項)或者共享鎖(即其他事務(wù)只能讀所述數(shù)據(jù)項,但不能對其進行修改)的 形式。
在數(shù)據(jù)庫復(fù)制的情形中,經(jīng)常希望不僅由存儲數(shù)據(jù)項的主數(shù)據(jù)庫系統(tǒng)處理事務(wù), 而且由存儲復(fù)制數(shù)據(jù)項的至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)處理事務(wù)。如前面已經(jīng)進一步闡述的, 事務(wù)處理,特別是查詢(即只讀事務(wù)),同步于復(fù)制處理,并且在任何隔離級別中都是以負 載平衡為目的使用復(fù)制數(shù)據(jù)庫的先決條件。但是,當與仍在進行的事務(wù)相關(guān)的數(shù)據(jù)被復(fù)制 時,數(shù)據(jù)后來由于更新或是由于相應(yīng)事務(wù)的回滾可能會變化。這種情況下,當事務(wù)的第一個 修改已經(jīng)被處理時,事務(wù)本身還沒有結(jié)束(提交)。即使事務(wù)只包括一個單個修改步驟,該 事務(wù)也包括兩個步驟;第一步是修改,第二步是事務(wù)結(jié)束(提交)。因此,針對這個復(fù)制數(shù) 據(jù)的查詢可能不會得到該數(shù)據(jù)的事務(wù)一致的視圖,從而導致查詢獲得了不正確的結(jié)果(因 而破壞了上述的一致性屬性)。
為了保證在數(shù)據(jù)庫復(fù)制情形下的事務(wù)一致性,前面描述的現(xiàn)有技術(shù)中已知的數(shù)據(jù) 庫復(fù)制方法要么根本不支持對主數(shù)據(jù)庫系統(tǒng)和復(fù)制數(shù)據(jù)庫系統(tǒng)同時進行查詢,要么復(fù)制方 法(比如基于包含修改數(shù)據(jù)的傳統(tǒng)方式的重做日志數(shù)據(jù),見下文)不能為同時查詢提供除 了 ‘讀取未提交’以外的其他隔離級別。特別是,如果沒有來自原始數(shù)據(jù)庫的鎖定數(shù)據(jù),在 復(fù)制數(shù)據(jù)庫上使用加強鎖定技術(shù),比如分層鎖定,是不可能的。
因此本發(fā)明的一個目的就是提供一種改進方法,使得事務(wù)處理,特別是查詢(即 只讀事務(wù)),能夠與復(fù)制處理同步并且能夠處于任何隔離級別。
—方面,這是通過在數(shù)據(jù)庫系統(tǒng)中存儲額外信息來實現(xiàn)的,比如圖1所示的主數(shù) 據(jù)庫系統(tǒng)10??梢钥闯?,主數(shù)據(jù)庫系統(tǒng)10包括至少一個主數(shù)據(jù)庫101和至少一個重做日志 102.
為了允許主數(shù)據(jù)庫系統(tǒng)10以任何隔離級別處理事務(wù)(比如在圖1中針對主數(shù)據(jù) 庫系統(tǒng)10的更新事務(wù)106和/或只讀事務(wù)107),數(shù)據(jù)項的鎖定可以在主數(shù)據(jù)庫系統(tǒng)10的 鎖表103中被維護。鎖表103可包含用于旨在修改主數(shù)據(jù)庫101中的一個或多個數(shù)據(jù)項的 更新事務(wù)106的鎖條目,以及用于旨在查詢主數(shù)據(jù)庫101中的一個或多個數(shù)據(jù)項的只讀事 務(wù)107的鎖條目。事務(wù)106、107這兩種類型都可以由用戶和/或應(yīng)用發(fā)起,并且各個鎖表 條目可以包含到相應(yīng)用戶/應(yīng)用的引用和/或關(guān)于相應(yīng)鎖的信息。
但是,不論什么原因,如果更新事務(wù)106的其中一個步驟/操作發(fā)生故障,可能就 必需回滾或者撤銷相應(yīng)的更新事務(wù),即已經(jīng)處理過的所有的步驟/操作。如前面已經(jīng)解釋 過的,主數(shù)據(jù)庫系統(tǒng)10的重做日志102可以為此存儲關(guān)于由主數(shù)據(jù)庫系統(tǒng)10處理的事務(wù) 106的信息,這些信息可以被復(fù)制數(shù)據(jù)庫服務(wù)器用來進行回滾。另外,對主數(shù)據(jù)庫系統(tǒng)的回 滾可以使用另一個日志,比如日記日志。如果只讀事務(wù)107失效,那么就必須釋放在此事務(wù) 期間獲得的所有鎖定。
本發(fā)明提供的使得復(fù)制數(shù)據(jù)庫201上能夠進行事務(wù)一致的查詢的基本原理,就是 將該目的所需的鎖表103的條目添加到由主數(shù)據(jù)庫服務(wù)器100產(chǎn)生的重做日志104、102 中。8
然后重做日志102 (具有來自于鎖表103的添加數(shù)據(jù))可以被傳送到復(fù)制數(shù)據(jù)庫 服務(wù)器200并在那應(yīng)用。為此,復(fù)制數(shù)據(jù)庫系統(tǒng)20的復(fù)制數(shù)據(jù)庫服務(wù)器200(參考圖1)可 以使用重做日志102的鎖表記錄將鎖定添加到復(fù)制數(shù)據(jù)庫系統(tǒng)20的鎖表203,這與原始更 新事務(wù)106對主數(shù)據(jù)庫系統(tǒng)10的操作類似.。然后,即將由復(fù)制數(shù)據(jù)庫系統(tǒng)20處理的事務(wù) 207可以使用取決于所需的隔離級別的鎖定,使得將在主數(shù)據(jù)庫系統(tǒng)10和復(fù)制數(shù)據(jù)庫系統(tǒng) 20上獲得的鎖定沒有差異。
如圖1所示,重做日志數(shù)據(jù)通過鏈路105被傳輸?shù)綇?fù)制數(shù)據(jù)庫系統(tǒng)20,以用作復(fù)制 數(shù)據(jù)庫服務(wù)器200的輸入數(shù)據(jù)204,以更新復(fù)制數(shù)據(jù)庫201和維護復(fù)制數(shù)據(jù)庫系統(tǒng)20的鎖 表203。對查詢處理207使用同一個鎖表203使得可以解決主數(shù)據(jù)庫系統(tǒng)10中的只讀事務(wù) 207和復(fù)制更新事務(wù)106之間的數(shù)據(jù)訪問沖突。
根據(jù)本發(fā)明的一個方面,當為重做日志102創(chuàng)建記錄以在主數(shù)據(jù)庫101中保存用 于復(fù)制的更新事務(wù)步驟的修改數(shù)據(jù)時,掃描與相應(yīng)更新事務(wù)106 (比如它的發(fā)起用戶)相關(guān) 的鎖表103的條目以尋找排他鎖定。在創(chuàng)建具有更新事務(wù)步驟的修改數(shù)據(jù)的重做日志記錄 之前,可以創(chuàng)建重做日志102的新條目以存儲只與更新事務(wù)106所持有的這些鎖相關(guān)的數(shù) 據(jù)。
另一方面,不在重做日志102上創(chuàng)建共享鎖,因為它們不會引起與復(fù)制數(shù)據(jù)庫系 統(tǒng)20上的用戶之間的沖突,優(yōu)選不允許這些用戶執(zhí)行更新事務(wù)(注意到圖1所示,復(fù)制數(shù) 據(jù)庫系統(tǒng)20僅處理只讀事務(wù)207)。
此外,由于主數(shù)據(jù)庫系統(tǒng)處理的只讀事務(wù)107優(yōu)選在重做日志102上不可見,因 此,具有這些事務(wù)的鎖定數(shù)據(jù)的重做日志記錄也無需被創(chuàng)建。
用于在相應(yīng)的更新事務(wù)106中不被修改的數(shù)據(jù)項的排他鎖定可以在任何時間被 刪除。隨后,相應(yīng)的數(shù)據(jù)項可以被另一個事務(wù)鎖定。因此,為了傳播相應(yīng)的鎖不再被刪除該 鎖定的事務(wù)所持有,優(yōu)選立即創(chuàng)建具有該信息的重做日志記錄。沒有被顯式刪除的鎖定優(yōu) 選在由提交或回滾命令發(fā)起的相應(yīng)事務(wù)結(jié)束時隱式釋放。
另外,由于只讀事務(wù)207請求復(fù)制數(shù)據(jù)庫系統(tǒng)20上數(shù)據(jù)項的鎖定,而該鎖定已經(jīng) 被正在執(zhí)行更新事務(wù)(例如在復(fù)制期間)的復(fù)制數(shù)據(jù)庫服務(wù)器200排他鎖定了,因此在該 鎖定被釋放前針對復(fù)制數(shù)據(jù)庫系統(tǒng)20的只讀事務(wù)207優(yōu)選必須等待。
對于復(fù)制數(shù)據(jù)庫系統(tǒng)20而言,可以使用一個不同的死鎖解決策略來避免由減慢 復(fù)制處理導致的主數(shù)據(jù)庫系統(tǒng)10的大偏差。在只讀事務(wù)207正在等待復(fù)制數(shù)據(jù)庫系統(tǒng)20 所持有的鎖定并且復(fù)制數(shù)據(jù)庫系統(tǒng)20試圖獲取只讀事務(wù)207所已經(jīng)持有的鎖定的情況下, 作為引發(fā)死鎖的鎖的請求者的復(fù)制數(shù)據(jù)庫系統(tǒng)20的操作將不會被中止。相反地,復(fù)制數(shù)據(jù) 庫系統(tǒng)20進行的復(fù)制處理優(yōu)選具有更高優(yōu)先級,使得當發(fā)生沖突的鎖被釋放時中止和/或 強制重啟只讀事務(wù)207。
如前所述,在重做日志102上的額外鎖表記錄只有在需要時由復(fù)制數(shù)據(jù)庫系統(tǒng)20 創(chuàng)建。如圖2所示,圖2示出了主數(shù)據(jù)庫系統(tǒng)10所維護的鎖表103的示例性條目。由圖可 見,鎖表103的條目121包含由用戶ID為‘U2’的用戶發(fā)起的更新事務(wù)的鎖表條目,這些鎖 表條目將被用來在主數(shù)據(jù)庫系統(tǒng)10的重做日志緩沖區(qū)104和/或重做日志102中創(chuàng)建鎖 表記錄122.
更確切地說,圖2中所示的鎖表記錄122包含用于資源ID為‘1003’和‘1004’的資源(例如數(shù)據(jù)項)的鎖數(shù)據(jù)。該鎖表記錄122優(yōu)選在創(chuàng)建更新數(shù)據(jù)記錄之前被插入到重 做日志緩沖區(qū)104和/或重做日志102中。從圖2中還可以看到,ID為‘1005’的資源的 共享鎖的數(shù)據(jù)未被插入到重做日志記錄122的鎖表條目中,這是因為在復(fù)制數(shù)據(jù)庫系統(tǒng)20 中不需要這種信息,在復(fù)制數(shù)據(jù)庫系統(tǒng)20中,不允許用戶執(zhí)行更新事務(wù),因而不可能與共 享鎖產(chǎn)生沖突。
圖2的灰色區(qū)域還示出了尚未被用于在重做日志104/102上創(chuàng)建鎖表記錄122的 鎖表條目,這或是由于用戶‘U1’僅在持有來自只讀事務(wù)107的共享鎖,或是由于鎖來自于 尚未修改任何數(shù)據(jù)的用戶‘U3’。但是,如果用戶‘U3’(即,該用戶所發(fā)起的相應(yīng)事務(wù))執(zhí) 行實際的數(shù)據(jù)修改,那么具有ID為‘1006’的資源的鎖數(shù)據(jù)的鎖表記錄122將被創(chuàng)建。
因此,用作復(fù)制數(shù)據(jù)的重做日志102/104優(yōu)選只包含來自具有實際修改過主數(shù)據(jù) 庫101的更新事務(wù)106的用戶的數(shù)據(jù)。具有只讀事務(wù)107的用戶可能已經(jīng)正在使用鎖以符 合一定隔離級別(參考上文),但是復(fù)制處理并不需要該鎖定數(shù)據(jù)。因此,優(yōu)選延遲到當具 有數(shù)據(jù)修改的事務(wù)步驟致使在重做日志上創(chuàng)建更新數(shù)據(jù)記錄時,才在重做日志上創(chuàng)建鎖表 記錄。
圖3中的流程圖更詳細地展示了在給定用戶的事務(wù)的更新數(shù)據(jù)記錄在重做日志 104中被創(chuàng)建之前,由本發(fā)明的數(shù)據(jù)庫系統(tǒng)執(zhí)行的步驟首先,在步驟131,優(yōu)選在啟動期 間,數(shù)據(jù)庫系統(tǒng)檢查是否有至少一個允許進行同時查詢的復(fù)制數(shù)據(jù)庫系統(tǒng)20被注冊,如果 是,則設(shè)置標志來指示該數(shù)據(jù)庫系統(tǒng)為主數(shù)據(jù)庫系統(tǒng)10,該主數(shù)據(jù)庫系統(tǒng)10具有同時查詢 的復(fù)制。因此,任何執(zhí)行該步驟的數(shù)據(jù)庫系統(tǒng)都可以擔當主數(shù)據(jù)系統(tǒng)的角色。如果該標志 未被設(shè)置(步驟131),根本不需要將鎖數(shù)據(jù)寫入重做日志,而是只創(chuàng)建更新數(shù)據(jù)記錄(步驟 134)。這就進一步最小化了由主數(shù)據(jù)庫系統(tǒng)寫入的鎖數(shù)據(jù)的量,從而提高了它的性能。如 果該標志被設(shè)置(判定步驟131),則掃描鎖表以尋找發(fā)起相應(yīng)事務(wù)的用戶所持有的鎖(步 驟13 ,以創(chuàng)建具有一個或多個鎖數(shù)據(jù)條目的鎖表記錄(步驟13 ,并且優(yōu)選在這之后立 即創(chuàng)建更新數(shù)據(jù)記錄(步驟134)。
對于分層鎖定模型,不僅修改過的數(shù)據(jù)項被鎖定,而且額外的資源也可能被鎖定, 并可能在事務(wù)完成前被釋放。在鎖被用戶(即被其事務(wù))釋放后,該鎖可以被另一個用戶 (即其事務(wù))所獲取,并且在更新數(shù)據(jù)記錄對修改進行了記錄的情況下在重做日志上創(chuàng)建 鎖表記錄。在該鎖表記錄被創(chuàng)建之前,重做日志上的鎖數(shù)據(jù)記錄必須保證前一鎖被從復(fù)制 數(shù)據(jù)庫的鎖表中移除。圖4的流程圖描述了當釋放鎖定時何時需要創(chuàng)建鎖表記錄。首先, 在步驟140,數(shù)據(jù)庫系統(tǒng)檢查是否有至少一個允許進行同時查詢的復(fù)制數(shù)據(jù)庫系統(tǒng)20被注 冊,如果是,則設(shè)置標志來指示該數(shù)據(jù)庫系統(tǒng)為主數(shù)據(jù)庫系統(tǒng)10,該主數(shù)據(jù)庫系統(tǒng)10用于 具有同時查詢的復(fù)制。因此,任何執(zhí)行該步驟的數(shù)據(jù)庫系統(tǒng)都可以擔當主數(shù)據(jù)系統(tǒng)的角色。 如果該標志未被設(shè)置(步驟140),那么根本不需要將鎖數(shù)據(jù)寫入重做日志,并且處理流程 轉(zhuǎn)到“結(jié)束”步驟。如果為添加鎖而提供了鎖表記錄(判定步驟141),那么優(yōu)選立即創(chuàng)建 具有關(guān)于釋放的鎖的(步驟14 信息的重做日志記錄以避免在復(fù)制數(shù)據(jù)庫上產(chǎn)生鎖沖突。 僅當釋放鎖的用戶未更新任何數(shù)據(jù)時,不創(chuàng)建具有添加鎖的數(shù)據(jù)的鎖表記錄,也不需要具 有表明鎖被刪除的數(shù)據(jù)的重做日志記錄。
如圖5中所示,僅當需要時才由復(fù)制數(shù)據(jù)庫系統(tǒng)20創(chuàng)建鎖表記錄,并在盡可能晚 的時間創(chuàng)建具有(多個)鎖表條目的鎖表記錄縮短了所持有的鎖的時間窗口。這里,示出了一系列的事務(wù)步驟150以及為該事務(wù)創(chuàng)建的重做日志條目。更確切地說,圖5中所示的 事務(wù)步驟150包括四個鎖請求151( ‘Li,,'L2', ‘L3,和‘L4,),一個鎖釋放152 ( ‘R4,), 三個修改請求153( ‘Ml’,'WZ'和13’ )和事務(wù)結(jié)束步驟154( Τ’)。該圖表的灰色部 分表示其他用戶的事務(wù)步驟和由這些其他用戶的事務(wù)所創(chuàng)建的重做日志條目。在圖5的例 子中,為ID為‘1’,‘2’和‘3’的數(shù)據(jù)項添加鎖151的數(shù)據(jù)在對給定數(shù)據(jù)項創(chuàng)建具有首次 修改153的相應(yīng)更新數(shù)據(jù)記錄134之前被放進單個的鎖表記錄133中。圖5還示出了用于 ID為‘4’的數(shù)據(jù)項的另一鎖在為該事務(wù)創(chuàng)建首個重做日志記錄之前被釋放(參見事務(wù)步驟 ‘R4’ 152),因此沒有用于添加和釋放的數(shù)據(jù)將被放進鎖表記錄。上面提到的優(yōu)化在重做日 志中所需的空間更少,因而寫入和讀取重做日志數(shù)據(jù)所需要的I/O處理時間也就更少。在 鎖表中維護用戶的鎖并且通過掃描鎖表以尋找當創(chuàng)建下一更新數(shù)據(jù)日志記錄時獲取的新 鎖定來創(chuàng)建鎖表記錄,使得復(fù)制數(shù)據(jù)庫系統(tǒng)20所持有的鎖的時間段盡可能地短。
因此,用于鎖表記錄的數(shù)據(jù)優(yōu)選包含描述鎖定在不同鎖模式的資源的多個鎖數(shù)據(jù) 條目和關(guān)于重應(yīng)用多個鎖條目的額外數(shù)據(jù)。為了進一步優(yōu)化,這種數(shù)據(jù)優(yōu)選由兩種數(shù)據(jù)結(jié) 構(gòu)來表示基本的鎖表條目和鎖表條目擴展。對于其中未注冊過復(fù)制數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù) 器(參見上文),將僅使用基本鎖表條目數(shù)據(jù)結(jié)構(gòu)來進一步減少內(nèi)存消耗。
圖6示出了使用重做日志數(shù)據(jù)來復(fù)制主數(shù)據(jù)庫101的內(nèi)容。這里,復(fù)制數(shù)據(jù)庫系 統(tǒng)20的復(fù)制處理器262在輸入數(shù)據(jù)流中接收重做日志數(shù)據(jù)。重做日志上的鎖表記錄 被用來維護復(fù)制數(shù)據(jù)庫服務(wù)器200的鎖表203。具有由復(fù)制數(shù)據(jù)庫系統(tǒng)20的查詢處理器 263執(zhí)行的只讀事務(wù)207的查詢用戶也可以使用鎖表203。
如果事務(wù)正在試圖獲取復(fù)制處理器262所已經(jīng)持有的鎖,則相應(yīng)事務(wù)(鎖的“請求 者”)被置于等待狀態(tài)。例如,圖7示出了由查詢處理器263執(zhí)行的一系列事務(wù)步驟271和 來自將被復(fù)制的重做日志的、導致在復(fù)制數(shù)據(jù)庫服務(wù)器200的鎖表203中創(chuàng)建條目的事務(wù) 步驟272。在這個例子中,查詢用戶‘Q3’試圖獲取復(fù)制處理器262所已經(jīng)持有的、用于ID 為‘1003’的資源的鎖,因此用戶‘Q3’在用于ID為‘1003’的資源的鎖被釋放之前必須等待。
可能在查詢用戶和復(fù)制處理器中發(fā)生的死鎖情況優(yōu)選以有利于復(fù)制處理器的方 式解決以避免復(fù)制處理被減慢,效果是用來復(fù)制并行運行的事務(wù)的復(fù)制處理器所已經(jīng)持有 的其他鎖可造成與其他查詢用戶之間的鎖沖突。為此,在死鎖情況下中止查詢用戶的只讀 事務(wù)。這種方法適于達到最佳的整體性能。
正如上文已經(jīng)提出的,存儲在重做日志記錄中的鎖數(shù)據(jù)包括不同的鎖類型,例如 排他鎖、共享鎖和/或意向鎖類型。可以提供額外的鎖操作,例如將鎖升級為更強的鎖或者 降級為更弱的鎖??梢砸灶愃朴谔砑渔i的方式(參見上文)執(zhí)行在重做日志上創(chuàng)建用于升 級鎖的鎖表記錄的操作。以類似于刪除鎖的方式執(zhí)行使鎖降級。
總之,本發(fā)明的上述實施例通過用優(yōu)選來自鎖表103的鎖定數(shù)據(jù)來補充重做日志 數(shù)據(jù)102/104(即復(fù)制數(shù)據(jù))、以特別高效的方法實現(xiàn)了復(fù)制數(shù)據(jù)庫上的事務(wù)一致的查詢。 主數(shù)據(jù)庫服務(wù)器100通過僅過濾處理將被復(fù)制的更新所需的那些鎖來使將被添加到重做 日志中的鎖數(shù)據(jù)的量降到最低。這些鎖定優(yōu)選是更新事務(wù)106的排他鎖。主數(shù)據(jù)庫101上 的共享鎖和只讀事務(wù)107的鎖以及沒有更新處理的更新事務(wù)106中的排他鎖不被包括在重 做日志數(shù)據(jù)104、102中。在沒有向主數(shù)據(jù)庫系統(tǒng)10注冊的復(fù)制數(shù)據(jù)庫系統(tǒng)20的情況下,優(yōu)選在重做日志中不包括任何鎖定信息。通過使用額外的鎖定數(shù)據(jù),復(fù)制數(shù)據(jù)庫201的復(fù) 制數(shù)據(jù)庫服務(wù)器200可以有效地為與復(fù)制處理并行運行的查詢(只讀事務(wù)207)提供與主 數(shù)據(jù)庫10的主數(shù)據(jù)庫服務(wù)器100相同的鎖模式和隔離級別。
權(quán)利要求
1.一種用于復(fù)制主數(shù)據(jù)庫系統(tǒng)(10)的一個或多個數(shù)據(jù)項的方法,所述方法包括由所 述主數(shù)據(jù)庫系統(tǒng)(10)執(zhí)行的如下步驟a.提供復(fù)制數(shù)據(jù)(102,104)給至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)(20),所述至少一個復(fù)制數(shù)據(jù) 庫系統(tǒng)00)可使用所述復(fù)制數(shù)據(jù)(102,104)來復(fù)制所述主數(shù)據(jù)庫系統(tǒng)(10)的所述一個或 多個數(shù)據(jù)項;以及b.向在步驟a中發(fā)送的所述復(fù)制數(shù)據(jù)(102,104)添加鎖數(shù)據(jù)(103),其中,所述鎖數(shù)據(jù) (103)與所述一個或多個數(shù)據(jù)項上的至少一個鎖相關(guān)。
2.如權(quán)利要求1所述的方法,其中,只有當相關(guān)的至少一個鎖被所述主數(shù)據(jù)庫系統(tǒng) (10)所接收到的更新事務(wù)(106)請求時,所述鎖數(shù)據(jù)(10 才被添加到在步驟a中提供的 所述復(fù)制數(shù)據(jù)(102,104)。
3.如權(quán)利要求1或2所述的方法,其中,只有當相關(guān)的至少一個鎖是排他鎖時,所述鎖 數(shù)據(jù)(103)才被添加到在步驟a中提供的復(fù)制數(shù)據(jù)(102,104)。
4.如任何一個在先權(quán)利要求所述的方法,其中,只有在與所述至少一個鎖相關(guān)的所述 一個或多個數(shù)據(jù)項在所述主數(shù)據(jù)庫系統(tǒng)(10)對更新事務(wù)(106)的處理期間中已被修改時, 所述鎖數(shù)據(jù)(10 才被添加到在步驟a中提供的所述復(fù)制數(shù)據(jù)(102,104)。
5.如任何一個在先權(quán)利要求所述的方法,其中,只有在所述主數(shù)據(jù)庫系統(tǒng)(10)中注冊 了適于同時查詢的至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)00)的情況下,才執(zhí)行步驟b。
6.一種用于由復(fù)制數(shù)據(jù)庫系統(tǒng)00)復(fù)制主數(shù)據(jù)庫系統(tǒng)(10)的一個或多個數(shù)據(jù)項的方 法,所述方法包括由復(fù)制數(shù)據(jù)庫系統(tǒng)00)執(zhí)行的如下步驟a.從所述主數(shù)據(jù)庫系統(tǒng)(10)接收復(fù)制數(shù)據(jù)(102,104),并且根據(jù)所述復(fù)制數(shù)據(jù)(102, 104)復(fù)制所述主數(shù)據(jù)庫系統(tǒng)(10)的所述一個或多個數(shù)據(jù)項;b.其中在步驟a中接收到的所述復(fù)制數(shù)據(jù)(102,104)包含與所述一個或多個數(shù)據(jù)項上 的至少一個鎖相關(guān)的鎖數(shù)據(jù)(103)。
7.如權(quán)利要求6所述的方法,其中,所述鎖數(shù)據(jù)(10 與所述一個或多個數(shù)據(jù)項上的至 少一個排他鎖相關(guān),其中至少一個只讀事務(wù)(207)對所述一個或多個數(shù)據(jù)項請求第二鎖, 并且其中所述方法包括延遲對所述至少一個只讀事務(wù)O07)的處理直到所述至少一個排 他鎖被所述復(fù)制數(shù)據(jù)庫系統(tǒng)00)釋放為止的步驟。
8.如前一權(quán)利要求所述的方法,其中,所述復(fù)制數(shù)據(jù)庫系統(tǒng)00)為了復(fù)制目的而向所 述一個或多個數(shù)據(jù)項請求第三鎖,其中所述第三鎖已經(jīng)被所述至少一個只讀事務(wù)(207)所 持有,并且其中所述方法包括強制所述至少一個只讀事務(wù)(207)釋放所述第三鎖的另一步 馬聚ο
9.一種主數(shù)據(jù)庫系統(tǒng)(10),包括a.適于向至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)00)發(fā)送復(fù)制數(shù)據(jù)(102,104)的主數(shù)據(jù)庫服務(wù)器 (100),所述復(fù)制數(shù)據(jù)將被所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)00)用來復(fù)制所述主數(shù)據(jù)庫系統(tǒng) (10)中一個或多個數(shù)據(jù)項;b.其中,所述復(fù)制數(shù)據(jù)(102,104)包含與所述一個或多個數(shù)據(jù)項上的至少一個鎖相關(guān) 的鎖數(shù)據(jù)(103)。
10.如前一權(quán)利要求所述的主數(shù)據(jù)庫系統(tǒng)(10),其中,所述主數(shù)據(jù)庫服務(wù)器(100)適 于只有當相關(guān)的至少一個鎖被所述主數(shù)據(jù)庫系統(tǒng)(10)所接收到的更新事務(wù)(106)請求時,才把鎖數(shù)據(jù)(10 添加到被發(fā)送給所述至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)00)的復(fù)制數(shù)據(jù) (102,104)。
11.如權(quán)利要求9或10所述的主數(shù)據(jù)庫系統(tǒng)(10),其中,所述主數(shù)據(jù)庫服務(wù)器(100) 適于只有當相關(guān)的至少一個鎖是排他鎖時,才把鎖數(shù)據(jù)(10 添加到被發(fā)送給所述至少 一個復(fù)制數(shù)據(jù)庫系統(tǒng)00)的復(fù)制數(shù)據(jù)(102,104)。
12.—種復(fù)制數(shù)據(jù)庫系統(tǒng)(20),包括a.復(fù)制數(shù)據(jù)庫服務(wù)器000),其適于接收來自主數(shù)據(jù)庫系統(tǒng)(10)的復(fù)制數(shù)據(jù)(102, 104)并適于根據(jù)所述復(fù)制數(shù)據(jù)(102,104)來復(fù)制所述主數(shù)據(jù)庫系統(tǒng)(10)的一個或多個數(shù) 據(jù)項;b.其中,所述復(fù)制數(shù)據(jù)(102,104)包含與所述一個或多個數(shù)據(jù)項上的至少一個鎖相關(guān) 的鎖數(shù)據(jù)(103)。
13.如前一權(quán)利要求所述的復(fù)制數(shù)據(jù)庫系統(tǒng)(20),其中,所述鎖數(shù)據(jù)(103)與所述一個 或多個數(shù)據(jù)項上的至少一個排他鎖相關(guān),其中至少一個只讀事務(wù)(207)對所述一個或多個 數(shù)據(jù)項請求第二鎖,并且其中所述復(fù)制數(shù)據(jù)庫服務(wù)器(200)還適于延遲對所述至少一個只 讀事務(wù)Q07)的處理直到所述至少一個排他鎖被所述復(fù)制數(shù)據(jù)庫系統(tǒng)00)釋放為止。
14.一種系統(tǒng),包括一個如權(quán)利要求9-11中任何一個所述的主數(shù)據(jù)庫系統(tǒng)(10)和至少 一個如權(quán)利要求12或13中任何一個所述的復(fù)制數(shù)據(jù)庫系統(tǒng)00)。
15.一種計算機程序,包含適于實現(xiàn)如權(quán)利要求1-5中任何一個和/或權(quán)利要求6-8中 任何一個所述的方法的指令。
16.
全文摘要
本發(fā)明公開了主數(shù)據(jù)庫系統(tǒng)、復(fù)制其數(shù)據(jù)的方法以及復(fù)制數(shù)據(jù)庫系統(tǒng)。本發(fā)明涉及一種用于復(fù)制主數(shù)據(jù)庫系統(tǒng)(10)的一個或多個數(shù)據(jù)項的方法,該方法包括由主數(shù)據(jù)庫系統(tǒng)(10)執(zhí)行的如下步驟a.提供復(fù)制數(shù)據(jù)(102,104)給至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)(20),至少一個復(fù)制數(shù)據(jù)庫系統(tǒng)(20)可使用所述復(fù)制數(shù)據(jù)(102,104)來復(fù)制主數(shù)據(jù)庫系統(tǒng)(10)的所述一個或多個數(shù)據(jù)項;以及b.向在步驟a中發(fā)送的復(fù)制數(shù)據(jù)(102,104)添加鎖數(shù)據(jù)(103),其中,所述鎖數(shù)據(jù)(103)與所述一個或多個數(shù)據(jù)項中的至少一個鎖相關(guān)。
文檔編號G06F17/30GK102043838SQ201010572638
公開日2011年5月4日 申請日期2010年10月9日 優(yōu)先權(quán)日2009年10月9日
發(fā)明者哈拉德·斯隆寧, 格哈德·舒瑪切爾, 漢斯-于爾根·圖恩, 海因茲·庫爾登 申請人:軟件股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
横峰县| 崇文区| 金沙县| 康平县| 健康| 全椒县| 锡林浩特市| 彭泽县| 伊金霍洛旗| 博爱县| 宁南县| 蛟河市| 扶绥县| 赤水市| 卓尼县| 洛宁县| 青海省| 阿拉尔市| 海阳市| 壶关县| 兴山县| 乐至县| 濮阳市| 顺义区| 新田县| 壶关县| 莎车县| 柏乡县| 内黄县| 陆川县| 巢湖市| 郑州市| 南宫市| 阳高县| 仁怀市| 普陀区| 娄烦县| 柳林县| 邹平县| 永胜县| 休宁县|