表數(shù)據(jù)比較的方法和系統(tǒng)的制作方法【專利摘要】公開了一種用于表數(shù)據(jù)比較的系統(tǒng)和方法,該系統(tǒng)和方法使得表具有高準(zhǔn)確性(高置信度),其中一個(gè)表是另一個(gè)表的拷貝,通過復(fù)制同步保持該拷貝。該方法利用具有抽樣的、基于統(tǒng)計(jì)結(jié)果的或者基于物化查詢表的方法進(jìn)行數(shù)據(jù)庫比較。該方法首先識(shí)別包括源數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的塊和目標(biāo)數(shù)據(jù)庫表中的相應(yīng)塊,并且獲得與每個(gè)塊關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果值。然后,比較相應(yīng)源塊和目標(biāo)塊的統(tǒng)計(jì)結(jié)果值,并且基于比較結(jié)果,確定源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫的一致性評(píng)估。又一種方法使得能夠在正在比較識(shí)別的塊的時(shí)候,以考慮到對(duì)初始源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的實(shí)時(shí)數(shù)據(jù)修改的方式,將數(shù)據(jù)確定為持久性的或者不是持久性的?!緦@f明】表數(shù)據(jù)比較的方法和系統(tǒng)
技術(shù)領(lǐng)域:
[0001]本發(fā)明設(shè)及數(shù)據(jù)復(fù)制(replication),并且尤其設(shè)及在數(shù)據(jù)庫管理系統(tǒng)中采用的方法和系統(tǒng),用于將源數(shù)據(jù)庫結(jié)構(gòu)中含有的數(shù)據(jù)與在目標(biāo)數(shù)據(jù)庫中復(fù)制的對(duì)應(yīng)于源數(shù)據(jù)庫表的數(shù)據(jù)進(jìn)行比較,并且識(shí)別任何差異?!?br>背景技術(shù):
】[0002]數(shù)據(jù)復(fù)制是企業(yè)通過數(shù)據(jù)冗余保證連續(xù)數(shù)據(jù)復(fù)制的慣常做法。從技術(shù)的角度出發(fā),有基于磁盤復(fù)制方法和基于中間層軟件復(fù)制方法。根據(jù)復(fù)制協(xié)議,有同步復(fù)制和異步復(fù)制。[0003]在異步復(fù)制中,做了導(dǎo)致數(shù)據(jù)變化的事務(wù)后,復(fù)制數(shù)據(jù);因此,不影響源站點(diǎn)事務(wù)性能。為了證實(shí)數(shù)據(jù)是否100%準(zhǔn)確復(fù)制,特別是當(dāng)應(yīng)用異步復(fù)制時(shí),通常使用數(shù)據(jù)比較應(yīng)用。對(duì)于數(shù)據(jù)庫,進(jìn)行比較W在每個(gè)關(guān)鍵值和每個(gè)記錄列的記錄數(shù)量方面保證源中的和(復(fù)審IJ)目標(biāo)的數(shù)據(jù)項(xiàng)一致(匹配)。[0004]當(dāng)數(shù)據(jù)庫表變得非常大,并且兩個(gè)數(shù)據(jù)庫在物理上相距遠(yuǎn)(例如,某個(gè)距離)時(shí),運(yùn)種比較非常昂貴,因?yàn)閺谋硖崛?shù)據(jù),并且將一個(gè)數(shù)據(jù)庫中的行發(fā)送到另一個(gè)進(jìn)行比較的成本。為了減少傳遞的數(shù)據(jù)量,可W傳遞一個(gè)或者多個(gè)記錄的校驗(yàn)和,代替記錄本身。僅當(dāng)校驗(yàn)和比較不匹配時(shí),才采用行比較。[0005]此外,為了改善性能,能夠采用并行比較,并且為了確認(rèn)有效而比較數(shù)據(jù)塊的校驗(yàn)和。然而,并行比較僅改善比較的歷時(shí),而不減少工作量,并且因此,I/O和網(wǎng)絡(luò)仍緊張并且占用CPU。[0006]對(duì)于許多客戶,非常希望降低進(jìn)行表差異比較的成本。運(yùn)樣既包含比較成本又包含比較花費(fèi)的時(shí)間。此外,數(shù)據(jù)量可W極高。在運(yùn)種情況下,比較必須使得當(dāng)進(jìn)行該比較時(shí)資源不崩潰?!?br/>發(fā)明內(nèi)容】[0007]本
技術(shù)領(lǐng)域:
存在W某個(gè)準(zhǔn)確性級(jí)別,而非基于逐行檢查方式(例如,利用行數(shù)據(jù)或者校驗(yàn)和)提供輕量比較的需要。[000引本
技術(shù)領(lǐng)域:
還存在提供一種輕量比較,該輕量比較包含即使在正在比較數(shù)據(jù)時(shí),當(dāng)在源或者目標(biāo)更新數(shù)據(jù)時(shí),仍對(duì)活環(huán)境的跟蹤機(jī)制。[0009]在該公開中,提供了一種能夠W高準(zhǔn)確性(高置信度)進(jìn)行輕量表比較的系統(tǒng)和方法W及計(jì)算機(jī)程序產(chǎn)品。所公開的輕量表比較的特征從如下方面解決了該問題:1)基于統(tǒng)計(jì)結(jié)果的;2)基于抽樣的;W及3)基于物化查詢表(MQT)的,該MQT是其定義基于查詢結(jié)果的表。[0010]根據(jù)一個(gè)方面,提供了一種表數(shù)據(jù)比較的方法。該方法包括:識(shí)別包括源數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的塊和包括第二數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的相應(yīng)塊;獲得與包含在源表的識(shí)別塊中的數(shù)據(jù)關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果值,并且獲得包含在目標(biāo)表塊的相應(yīng)塊中的數(shù)據(jù)的又一個(gè)統(tǒng)計(jì)結(jié)果值;比較統(tǒng)計(jì)結(jié)果值,w確定匹配結(jié)果;w及基于比較的結(jié)果,確定每個(gè)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表的塊是否一致,其中編程處理器設(shè)備執(zhí)行識(shí)別、獲得、比較W及確定操作。[0011]根據(jù)又一個(gè)方面,提供了一種用于表數(shù)據(jù)比較的系統(tǒng)。該系統(tǒng)包括:存儲(chǔ)器,配置該存儲(chǔ)器,W存儲(chǔ)從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表收到的數(shù)據(jù);處理器,該處理器與存儲(chǔ)器通信,配置該處理器W執(zhí)行方法,從而:識(shí)別包括源數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的塊和包括第二數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的相應(yīng)塊;獲得與包含在源表的識(shí)別塊中的數(shù)據(jù)關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果值,并且獲得包含在目標(biāo)表塊的相應(yīng)塊中的數(shù)據(jù)的又一個(gè)統(tǒng)計(jì)結(jié)果值;比較統(tǒng)計(jì)結(jié)果值,W確定匹配結(jié)果;W及基于比較的結(jié)果,確定每個(gè)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表的塊是否一致。[0012]提供了一種執(zhí)行操作的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包含處理電路可讀并且存儲(chǔ)該處理電路運(yùn)行的指令從而運(yùn)行(各)方法的儲(chǔ)存介質(zhì)。(各)方法與上面所列的相同?!靖綀D說明】[0013]根據(jù)下面對(duì)其說明性實(shí)施例所做的詳細(xì)描述,本公開的特征和優(yōu)點(diǎn)顯而易見,結(jié)合附圖閱讀該詳細(xì)描述。附圖中:[0014]圖1是示出根據(jù)實(shí)施例的通用數(shù)據(jù)比較架構(gòu)的原理框圖;[0015]圖2A是示出根據(jù)本公開提供的一個(gè)實(shí)施例的應(yīng)用的數(shù)據(jù)流圖,配置該應(yīng)用,W確定數(shù)據(jù)庫環(huán)境下的差異;[0016]圖2B是示出根據(jù)本公開提供的一個(gè)實(shí)施例的表比較應(yīng)用的應(yīng)用架構(gòu)的示意圖;[0017]圖2C是示出根據(jù)本公開提供的一個(gè)實(shí)施例的表比較應(yīng)用的應(yīng)用架構(gòu)的示意圖;[0018]圖2D是示出根據(jù)本公開提供的一個(gè)實(shí)施例的飛行比較應(yīng)用的應(yīng)用架構(gòu)的示意圖;[0019]圖3示出執(zhí)行在此描述的方法的示例性硬件配置;[0020]圖4A-4B示出一個(gè)實(shí)施例中的輕量表比較的通用處理;[0021]圖5示出一個(gè)實(shí)施例中為了輕量表比較而從源表數(shù)據(jù)庫和目標(biāo)表數(shù)據(jù)庫中提取相應(yīng)塊的統(tǒng)計(jì)數(shù)據(jù)的詳圖;[0022]圖6示出在一個(gè)實(shí)施例中為了執(zhí)行輕量表比較從MQT表提取數(shù)據(jù)的方法流程的一個(gè)實(shí)施例;[0023]圖7示出在一個(gè)實(shí)施例中基于抽樣的輕量表比較方法的一個(gè)方案;[0024]圖8是示出在一個(gè)實(shí)施例中RETRY_COMPARE_WA口時(shí)間間隔如何處理復(fù)制;[0025]圖9示出在一個(gè)實(shí)施例中在活更新環(huán)境下確定特定差異的持久性類型的方法;[0026]圖10示出如在此所述用于對(duì)持久性差異進(jìn)行確定的系統(tǒng);[0027]圖11示出用于對(duì)采用使用僅??谟糜趯?duì)單獨(dú)差異執(zhí)行再檢驗(yàn)的專用處理線程的持久性差異進(jìn)行確定的系統(tǒng);[0028]圖12示出因?yàn)檫M(jìn)度監(jiān)視功能指出獲得的完成統(tǒng)計(jì)結(jié)果的典型輸出消息;[0029]圖13是示出執(zhí)行在此描述的詳細(xì)過程的結(jié)果的典型差異檢測(cè)結(jié)果表;W及[0030]圖14示出典型報(bào)告,配置該典型報(bào)告,W在差異檢測(cè)中提供全部統(tǒng)計(jì)結(jié)果?!揪唧w實(shí)施方式】[0031]現(xiàn)在將參考下面的討論和本申請(qǐng)的附圖更詳細(xì)描述本公開。為了說明的目的提供本申請(qǐng)的圖,本說明書的下面將更詳細(xì)參考本申請(qǐng)的圖。[0032]現(xiàn)在描述提供輕量表比較的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在此描述的輕量表比較的系統(tǒng)和方法的特征從1)統(tǒng)計(jì)結(jié)果;2)抽樣;和/或者3)物化查詢表(MQT)方面確定源表和目標(biāo)表中的差異,該MQT是其定義基于查詢結(jié)果的表。[0033]根據(jù)進(jìn)一步特征,現(xiàn)在描述的用于輕量表比較的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品還運(yùn)行,W在"活"更新環(huán)境下,檢測(cè)對(duì)相應(yīng)源和目標(biāo)數(shù)據(jù)庫表行項(xiàng)目中的差異,在"活"更新環(huán)境下,在執(zhí)行比較操作的同時(shí),更新初始源和/或者目標(biāo)數(shù)據(jù)庫表,W識(shí)別檢測(cè)到差異的特定行的持久性類型。運(yùn)可W包含在已經(jīng)確定為不同的源和目標(biāo)數(shù)據(jù)庫表行中對(duì)基于數(shù)據(jù)行的并列數(shù)據(jù)塊執(zhí)行"再檢驗(yàn)"的特征。[0034]因此,在第一方面中,為了比較數(shù)據(jù),執(zhí)行"小"塊的比較。當(dāng)比較"活"數(shù)據(jù)時(shí),使用小數(shù)據(jù)塊具有顯著優(yōu)勢(shì),因?yàn)閮H當(dāng)比較一對(duì)塊時(shí),既從源又從目標(biāo)讀出數(shù)據(jù),包含在運(yùn)些塊中的行發(fā)生變化的概率小。實(shí)用程序捕獲比較應(yīng)用訪問其之前對(duì)塊的任何變化,而不考慮對(duì)該塊完成比較之后發(fā)生的任何變化。[0035]因此,在第一方面中,提供了一種輕量表比較的系統(tǒng)和方法,W從1)統(tǒng)計(jì)結(jié)果;2)抽樣;和/或者3)物化查詢表(MQT)方面確定源(src)數(shù)據(jù)表和目標(biāo)(trgt)數(shù)據(jù)表中的差異,該MQT是其定義基于查詢結(jié)果的表。[0036]在一個(gè)方面中,利用"合并"過程,用于輕量表比較的系統(tǒng)和方法實(shí)現(xiàn)用于數(shù)據(jù)表比較的系統(tǒng)架構(gòu)和操作環(huán)境,在該"合并"過程中,合并過程根據(jù)上述系統(tǒng)和共有的共同未決的標(biāo)題為"DatabaseTableComparison"的美國(guó)專利公布No.2012/0317134和標(biāo)題為"DifferenceDeterminationinaDatabaseEnvironment"的美國(guó)專利公布No.US2014/0372374描述的方法執(zhí)行數(shù)據(jù)表比較,如同在此做全面陳述一樣,通過引用合并運(yùn)兩個(gè)美國(guó)專利公布中每個(gè)的全部公開和內(nèi)容。[0037]在又一個(gè)方面中,用于輕量表比較的系統(tǒng)和方法實(shí)現(xiàn)修改的系統(tǒng)架構(gòu)和操作環(huán)境,W執(zhí)行差異再檢驗(yàn)技術(shù),關(guān)于持久性,該差異再檢驗(yàn)技術(shù)保證最新確定差異及其狀況。[0038]圖1是示出實(shí)現(xiàn)根據(jù)一個(gè)實(shí)施例的系統(tǒng)和方法的數(shù)據(jù)比較架構(gòu)10的原理框圖。該架構(gòu)包含第一源數(shù)據(jù)庫(DMBS)20A,該第一源數(shù)據(jù)庫(DMBS)20A實(shí)現(xiàn)第一計(jì)算設(shè)備,例如,月良務(wù)器21A并且存儲(chǔ)包括源數(shù)據(jù)庫表39的原始數(shù)據(jù)。配置源數(shù)據(jù)庫系統(tǒng)20A,W提供數(shù)據(jù),并且計(jì)算用于輕量數(shù)據(jù)庫表比較用途的校驗(yàn)和等。同樣,架構(gòu)10包含第二目標(biāo)數(shù)據(jù)庫(DBMS)20B,該第二目標(biāo)數(shù)據(jù)庫(DBMS)20B實(shí)現(xiàn)第二計(jì)算設(shè)備,例如,服務(wù)器21B,并且存儲(chǔ)由目標(biāo)數(shù)據(jù)庫表38中的源數(shù)據(jù)庫復(fù)制的數(shù)據(jù)??蒞配置目標(biāo)數(shù)據(jù)庫系統(tǒng)20A,W對(duì)比較應(yīng)用作出響應(yīng),從而提供相應(yīng)數(shù)據(jù),并且計(jì)算目標(biāo)數(shù)據(jù)庫的相應(yīng)校驗(yàn)和,W用于輕量數(shù)據(jù)庫表比較用途。提供比較應(yīng)用33,該比較應(yīng)用33在遠(yuǎn)離頭兩個(gè)數(shù)據(jù)塊38、39但是提供公共或者專用通信網(wǎng)絡(luò)99通信的又一個(gè)計(jì)算設(shè)備25中實(shí)現(xiàn)為存儲(chǔ)過程。在操作中,配置比較應(yīng)用33,W起動(dòng)在源數(shù)據(jù)庫39中本地提取數(shù)據(jù)并且起動(dòng)在目標(biāo)數(shù)據(jù)庫39中本地提取相應(yīng)數(shù)據(jù);接收源數(shù)據(jù)和相應(yīng)目標(biāo)數(shù)據(jù);將包含在源數(shù)據(jù)庫39中的塊中的數(shù)據(jù)與包含在目標(biāo)數(shù)據(jù)庫39中的相應(yīng)塊中的數(shù)據(jù)進(jìn)行比較;W及報(bào)告該結(jié)果。在一個(gè)方面中,由比較應(yīng)用執(zhí)行輕量數(shù)據(jù)庫表比較。應(yīng)當(dāng)明白,在替換實(shí)施例中,比較應(yīng)用不一定遠(yuǎn)離源數(shù)據(jù)庫或者目標(biāo)數(shù)據(jù)庫,但是可w在本地在源計(jì)算設(shè)備20A或者目標(biāo)計(jì)算設(shè)備20B運(yùn)行。此外,源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫二者可W常駐并且共享單個(gè)設(shè)備。[0039]圖2A是示出應(yīng)用的數(shù)據(jù)流圖70,根據(jù)輕量表比較技術(shù)配置該應(yīng)用,W確定數(shù)據(jù)庫環(huán)境下的差異。[0040]在圖2A中,數(shù)據(jù)流圖70示出根據(jù)本公開提供的輕量表比較的一個(gè)實(shí)施例的應(yīng)用72,配置應(yīng)用72,W起動(dòng)數(shù)據(jù)庫環(huán)境下的差異。如圖所示,應(yīng)用72在不同時(shí)點(diǎn)將源表74內(nèi)的數(shù)據(jù)與目標(biāo)表76內(nèi)的數(shù)據(jù)進(jìn)行比較,該不同時(shí)點(diǎn)分隔開諸如復(fù)制等待間隔的預(yù)定間隔。根據(jù)比較,應(yīng)用72確定第一時(shí)點(diǎn)的差異78和第一時(shí)點(diǎn)之后的第二時(shí)點(diǎn)的差異80。根據(jù)差異78、80。應(yīng)用72根據(jù)一組預(yù)定規(guī)則86確定持久性差異82和/或者瞬間差異84。然后,應(yīng)用72輸出至少一個(gè)持久性差異或者瞬間差異。在一些實(shí)施例中,通過基于包含差異的非關(guān)鍵值和關(guān)鍵值的校驗(yàn)和過濾第二時(shí)間點(diǎn)的差異80,應(yīng)用72確定一組瞬間差異,并且接著,確定該組瞬間差異中的至少一個(gè)差異是持久性差異或者瞬間差異。在一些實(shí)施例中,利用源表或者塊與目標(biāo)表或者塊之間的幾個(gè)不同差異確定區(qū)別開源表和目標(biāo)表的持久性差異和瞬間差異。例如,在一個(gè)實(shí)施例中,基于第二時(shí)點(diǎn)的差異80并且還基于第二時(shí)點(diǎn)之后的第Ξ時(shí)點(diǎn)的差異,確定至少一個(gè)差異是持久性差異或者瞬間差異。[0041]在一個(gè)實(shí)施例中,在表比較應(yīng)用的架構(gòu)中可W實(shí)現(xiàn)在此公開的技術(shù),該表比較應(yīng)用允許在比較時(shí)對(duì)源表或者目標(biāo)表進(jìn)行更新,并且配置該表比較應(yīng)用,W區(qū)分持久性差異和瞬時(shí)性差異,但是盡管如此還要配置該表比較應(yīng)用,W有效比較WAN分離的表或者塊并且與表或者塊的大小無關(guān)。表或者塊比較應(yīng)用還稱為比較應(yīng)用是W包含預(yù)處理階段、區(qū)分階段和清潔階段的Ξ個(gè)順序階段比較表或者塊的并行實(shí)用程序。實(shí)用程序在內(nèi)部對(duì)運(yùn)兩個(gè)表分區(qū),并且并行地比較運(yùn)些分區(qū)。并行地對(duì)每個(gè)分區(qū)對(duì)進(jìn)行行檢索。然后,將在每個(gè)分區(qū)對(duì)中發(fā)現(xiàn)的差異組合,W獲得總結(jié)果。[0042]圖2B是示出根據(jù)一個(gè)實(shí)施例的比較應(yīng)用的架構(gòu)90的示意圖。區(qū)分階段的比較應(yīng)用包含協(xié)同線程池,該協(xié)同線程池包含:主線程94、分區(qū)線程96、合并線程98、子輸入和工作線程,如下所做的更詳細(xì)討論。在區(qū)分階段,主線程94創(chuàng)建分區(qū)線程95,該分區(qū)線程95基于分塊列(block-bycolumn)劃分表比較操作,并且將表比較操作劃分為較小的但大小相同的子操作或者任務(wù),該子操作或者任務(wù)中的每個(gè)對(duì)應(yīng)于源表和目標(biāo)表的子集或者分區(qū)。分塊列是索引列,該索引列能夠是分區(qū)鍵、主鍵或者任何列集。在運(yùn)方面,分區(qū)線程95從源表74中選擇每個(gè)分區(qū)的邊界分塊值,包含最小邊界分塊值和最大邊界分塊值,其中源表74存儲(chǔ)于源數(shù)據(jù)庫79中。在一個(gè)實(shí)施例中,將分區(qū)邊界確定為源表74的塊數(shù)和源表74的總行數(shù)的函數(shù)。在另一個(gè)實(shí)施例中,將邊界確定為特定塊中的預(yù)期行數(shù)和源表的行大小的函數(shù)。分區(qū)線程95利用邊界分塊值產(chǎn)生查詢語句,W從源表和目標(biāo)表中提取特定分區(qū)或者塊。然后,分區(qū)線程95通過任務(wù)隊(duì)列97將查詢語句傳遞到合并線程98。根據(jù)一個(gè)實(shí)施例,塊表記錄任務(wù)隊(duì)列97處理的特定塊語句。[0043]圖2C是示出根據(jù)本公開提供的一個(gè)實(shí)施例的比較應(yīng)用的架構(gòu)100的示意圖。如上所述,在運(yùn)行時(shí)并且基于預(yù)定工作負(fù)荷平衡策略或者拉出模型,分區(qū)線程95通過任務(wù)查詢將查詢語句和關(guān)聯(lián)分區(qū)比較任務(wù)分配到合并線程98。合并線程98識(shí)別與相應(yīng)分區(qū)比較任務(wù)的區(qū)別。為此,每個(gè)合并線程98創(chuàng)建兩種工作線程1021,……,102η,運(yùn)兩種工作線程1021,……,102η包含:僅與源數(shù)據(jù)庫交互的工作線程和僅與目標(biāo)數(shù)據(jù)庫交互的工作線程。對(duì)于每個(gè)分區(qū),合并線程98通過任務(wù)容器對(duì)每個(gè)工作線程102分配相應(yīng)描述相應(yīng)分區(qū)的查詢語句。然后,工作線程102調(diào)用在源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫中的每個(gè)上的存儲(chǔ)過程,或者直接從源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫提取數(shù)據(jù)。[0044]在一個(gè)實(shí)施例中,預(yù)定并且配置存儲(chǔ)過程,W通過查詢語句識(shí)別的分區(qū)返回聚合校驗(yàn)和。在此還將聚合校驗(yàn)和稱為合成校驗(yàn)和。存儲(chǔ)過程接收查詢語句作為輸入?yún)?shù),并且對(duì)該數(shù)據(jù)塊執(zhí)行多行或者塊提取,W抽取識(shí)別分區(qū)中的所有行或者塊。存儲(chǔ)過程計(jì)算每個(gè)行或者塊的相應(yīng)行校驗(yàn)和。將鍵值和校驗(yàn)和插入與調(diào)用工作線程102關(guān)聯(lián)的不記入日志的全局臨時(shí)表(GTT)實(shí)例。此外,存儲(chǔ)過程調(diào)用分區(qū)校驗(yàn)和功能是將識(shí)別的分區(qū)中的所有基于行的校驗(yàn)和聚合為單個(gè)校驗(yàn)和值。在一些實(shí)施例中,分區(qū)校驗(yàn)和比行校驗(yàn)和長(zhǎng)。例如,在特定實(shí)施例中,每個(gè)行校驗(yàn)和的長(zhǎng)度是4位,而每個(gè)分區(qū)校驗(yàn)和的長(zhǎng)度是8位。[0045]在一個(gè)實(shí)施例中,如果兩個(gè)分區(qū)校驗(yàn)和匹配,則合并線程98將當(dāng)前分區(qū)看作在源表和目標(biāo)表中一致,并且從任務(wù)隊(duì)列中請(qǐng)求下一個(gè)分區(qū)或者塊。相反,對(duì)于允許從全局臨時(shí)表提取,合并線程98與其他合并線程競(jìng)爭(zhēng)。獲得允許后,合并線程98將和并請(qǐng)求發(fā)送到工作線程102,W起動(dòng)合并比較子階段。在該合并比較子階段,運(yùn)行于分區(qū)上的兩個(gè)工作線程102從由鍵順序分類的全局臨時(shí)表提取鍵和相應(yīng)基于行的校驗(yàn)和,并且通過校驗(yàn)和項(xiàng)目隊(duì)列,將該鍵和相應(yīng)基于行的校驗(yàn)和送到合并線程98。然后,合并線程98對(duì)鍵值執(zhí)行合并連接,W逐行地或者逐塊地發(fā)現(xiàn)差異、通過差異隊(duì)列106對(duì)差異報(bào)告線程104報(bào)告識(shí)別到的差異。[0046]在另一個(gè)實(shí)施例中,運(yùn)行于分區(qū)上的兩個(gè)工作線程102提取由鍵順序分類的源表和目標(biāo)表,并且計(jì)算相應(yīng)基于行的校驗(yàn)和,并且通過校驗(yàn)和項(xiàng)目隊(duì)列,將它們送到合并線程98,而不必調(diào)用存儲(chǔ)過程。然后,合并線程98對(duì)鍵值執(zhí)行合并連接,W逐行地或者逐塊地發(fā)現(xiàn)差異,通過差異隊(duì)列106對(duì)差異報(bào)告線程104報(bào)告識(shí)別的差異。[0047]在一個(gè)實(shí)施例中,配置在此還稱為報(bào)告線程的差異報(bào)告線程104,W從差異隊(duì)列106讀出發(fā)現(xiàn)的差異,并且將差異項(xiàng)插入差異表中,該差異項(xiàng)含有識(shí)別差異和諸如插入、更新或者刪除的相應(yīng)動(dòng)作的鍵值,W校正差異。在清除階段,如果操作,則比較應(yīng)用從數(shù)據(jù)塊除去全局臨時(shí)表的定義,并且輸出識(shí)別的差異和每個(gè)線程的完成統(tǒng)計(jì)結(jié)果。[0048]為了示例性和非限制性目的,通過擴(kuò)展表比較應(yīng)用的架構(gòu),可W實(shí)現(xiàn)在此公開的用于輕量表比較的技術(shù)。擴(kuò)展架構(gòu)可W用作用于的基礎(chǔ)。在此,運(yùn)種應(yīng)用還稱為飛行比較應(yīng)用程序。[0049]在一個(gè)實(shí)施例中,對(duì)于每對(duì)源表和目標(biāo)表,應(yīng)用產(chǎn)生或者生成差異表。差異表中的每個(gè)記錄是差異項(xiàng)并且表示源表與目標(biāo)表之間的特定行差異,其中利用其鍵值可識(shí)別每行。每個(gè)差異項(xiàng)包含一組鍵值、差異標(biāo)志W(wǎng)及持久標(biāo)志。該組鍵值指在源表和目標(biāo)表中都作為鍵值的一組屬性值。利用該鍵值,能夠提取源表和目標(biāo)表中的相應(yīng)行。差異標(biāo)志指明在源表與目標(biāo)表之間特定鍵行如何差異。從包含更新、插入和刪除的至少Ξ種差異標(biāo)志中選擇差異標(biāo)志一例如是否為了校正差異而要求執(zhí)行更新、插入或者刪除操作。持久標(biāo)志指明差異項(xiàng)是代表持久項(xiàng)還是瞬時(shí)項(xiàng),并且從包含持久、非持久(瞬時(shí))、未知和懷疑的至少四種持久標(biāo)志中選擇持久標(biāo)志。對(duì)于用戶,頭巧樸示志是外部標(biāo)志。對(duì)于差異初始化,懷疑是內(nèi)部類型的。[0050]在一個(gè)實(shí)施例中,兩行之間的每個(gè)比較使用兩行之間的最后比較的結(jié)果,W確定兩行之間的任何差異的持久性。如果對(duì)于復(fù)制保持的表發(fā)生更新可疑,則應(yīng)當(dāng)在從該最后比較操作開始經(jīng)歷了復(fù)制等待窗口之后執(zhí)行當(dāng)前比較操作??蒞將比較結(jié)果劃分為如下Ξ種。第一,如果在兩組結(jié)果中都存在差異并且相應(yīng)行仍相同,則認(rèn)為該差異是持久性的。第二,如果在當(dāng)前比較結(jié)果中不存在差異,則認(rèn)為該差異是瞬時(shí)的。根據(jù)該實(shí)施例,差異已經(jīng)飛行、已經(jīng)回滾或者已經(jīng)修復(fù)。為了釋放存儲(chǔ)空間,可W在第二次比較之后去除運(yùn)些差異。第Ξ,如果在當(dāng)前比較結(jié)果或者在兩個(gè)結(jié)果中存在差異,而且其相應(yīng)行不同,則認(rèn)為差異是未知類型的,并且可W在后續(xù)比較操作中確定其。[0051]在一個(gè)實(shí)施例中,當(dāng)根據(jù)運(yùn)里的技術(shù)配置時(shí),應(yīng)用呈現(xiàn)一組性質(zhì),包含:持久識(shí)別、較高并行性、較低開銷,并且改善可用性。如上所述,利用差異表中反映的先前識(shí)別的差異,飛行比較應(yīng)用確定差異的持久性。在一些實(shí)施例中,為了更有效捕獲關(guān)于鍵值和非鍵值的差異變化,應(yīng)用保持基于比較的校驗(yàn)和(CCRC)。在一個(gè)實(shí)施例中,每個(gè)CCRC值分別聚合來自源表和目標(biāo)表的兩個(gè)基于行的校驗(yàn)和。因此,還可W將基于列比較的校驗(yàn)和稱為聚合校驗(yàn)和或者合成校驗(yàn)和。關(guān)于CCRC在運(yùn)些行校驗(yàn)和之外呈現(xiàn)的性質(zhì),當(dāng)將其CCRC值進(jìn)行比較時(shí),可W簡(jiǎn)化比較兩個(gè)連續(xù)不同結(jié)果的過程。在一些實(shí)施例中,對(duì)于CCRC值的校驗(yàn)和沖突,應(yīng)用還可W配置有預(yù)定處理程序。在一些實(shí)施例中,在差異表中,還將CCR打己錄為新列。[0052]圖2D是示出根據(jù)本公開提供的一個(gè)實(shí)施例的飛行比較應(yīng)用的架構(gòu)120的示意圖。在一些實(shí)施例中,可W將合并線程看作代理1221,……,122η,配置該代理1221,……,122。,W確定源表與目標(biāo)表的相應(yīng)塊之間的差異。類似地,可W將差異報(bào)告線程看作差異報(bào)告代理,并且與在此公開的其他線程類型也如此。在差異報(bào)告線程處理了差異項(xiàng)并且因此將結(jié)果記錄在差異表中之后,將確定的差異作為差異項(xiàng)插入差異隊(duì)列中。在一些實(shí)施例中,在假定源表和目標(biāo)表具有小于闊值量的差異,例如,小于0.01%的差異的情況下,比較應(yīng)用運(yùn)行。然而,運(yùn)種假定在活動(dòng)時(shí)/活動(dòng)環(huán)境下可能不正確,其中瞬時(shí)性差異的數(shù)量可能大。因此,架構(gòu)W如下方式中的一個(gè)或者多個(gè)擴(kuò)展。例如,不使差異隊(duì)列僅占用單個(gè)存儲(chǔ)塊,而提供具有至少兩個(gè)旋轉(zhuǎn)存儲(chǔ)塊124的差異隊(duì)列,并且還將其稱為隊(duì)列差。當(dāng)差異報(bào)告線程104正在讀出并且處理塊的內(nèi)容時(shí),合并線程不應(yīng)當(dāng)對(duì)塊進(jìn)行內(nèi)容變更,直到差異報(bào)告線程完成處理整個(gè)塊。[0053]作為另一個(gè)例子,不立即對(duì)差異報(bào)告線程報(bào)告差異并且然后分別插入差異,而可W基于線程協(xié)調(diào)和差異插入的預(yù)定編組策略,批處理差異。在一個(gè)實(shí)施例中,在確定滿足如下條件中的一個(gè)之后,合并線程將陣列插入的給定存儲(chǔ)塊準(zhǔn)備好處理通知差異報(bào)告線程:(i)差異隊(duì)列中的存儲(chǔ)塊124中的一個(gè)是滿的;(ii)在特定時(shí)間間隔內(nèi),例如在對(duì)應(yīng)于識(shí)別到差異時(shí)的時(shí)間間隔內(nèi),存儲(chǔ)塊124中的一個(gè)含有特定數(shù)量的差異;W及(iii)完成全部比較。在一個(gè)實(shí)施例中,差異報(bào)告線程能夠在多行插入能夠使用的相應(yīng)描述符區(qū)域內(nèi)直接使用每個(gè)塊。描述符區(qū)域指動(dòng)態(tài)執(zhí)行插入語句要求的變量的集合。描述符區(qū)域的一個(gè)例子是S化描述符區(qū)域(S化DA),該S化描述符區(qū)域(SQLDA)是執(zhí)行SQLINSERT語句要求的變量的集合。每個(gè)變量描述代表含有目標(biāo)表的列的一個(gè)或者多個(gè)值的緩沖器的主變量陣列。[0054]作為又一個(gè)例子,不僅僅將鍵值和關(guān)聯(lián)動(dòng)作保持為差異表的每個(gè)差異項(xiàng)的一部分,擴(kuò)增差異項(xiàng),W對(duì)每個(gè)包含一個(gè)或者多個(gè)如下屬性:持久性類型、基于比較的校驗(yàn)和W及創(chuàng)建時(shí)間戳。在一個(gè)實(shí)施例中,差異報(bào)告線程確定持久性類型,而由合并線程確定基于行的校驗(yàn)和。[0055]在一個(gè)實(shí)施例中,為了改善比較性能并且為了確定報(bào)告差異的持久性類型,CCRC表示特定行的比較結(jié)果。假定其鍵值能夠識(shí)別源表或者目標(biāo)表的塊中的每行,則可W合成鍵值,W產(chǎn)生特定行校驗(yàn)和值。每個(gè)CCRC由兩個(gè)相應(yīng)特定行校驗(yàn)和值聚合。至少在某些情況下,CCRC可W簡(jiǎn)化比較,例如,僅比較兩次不同調(diào)用飛行比較應(yīng)用產(chǎn)生的相同鍵值的CCRC。如果校驗(yàn)和匹配,則認(rèn)為差異是持久的,否則認(rèn)為差異是瞬時(shí)的。[0056]在一個(gè)實(shí)施例中,利用各種預(yù)定技術(shù)的任何一種,應(yīng)用將兩個(gè)基于行的校驗(yàn)和聚合為CCRC。例如,按位"異或"(X0R)可W用作聚合函數(shù)。為了計(jì)算CCRC,源特定行校驗(yàn)和和目標(biāo)特定行校驗(yàn)和不應(yīng)當(dāng)匹配。如果該校驗(yàn)和相同,則意味著各行互相不同。此外,為了達(dá)到均勻分布特定行校驗(yàn)和值,應(yīng)當(dāng)類似地分布X0R產(chǎn)生的校驗(yàn)和值。另外,盡管兩個(gè)不同差異可能具有CCRC沖突,但是配置應(yīng)用,W支持處理該沖突。[0057]本說明書的下面將更詳細(xì)討論在數(shù)據(jù)庫表比較操作時(shí)發(fā)生的活更新條件下用于識(shí)別差異持久性類型的持久性差異識(shí)別。[0化引圖4A-4B示出一個(gè)實(shí)施例中的輕量表比較的通用處理。[0059]特別是,圖4A-4B示出在一個(gè)實(shí)施例中在圖1的比較應(yīng)用33中的區(qū)分階段運(yùn)行的合并線程為了執(zhí)行"輕量"表比較而執(zhí)行的方法200。如圖4A所示,在此所示的用于輕量表比較的方法200從使用統(tǒng)計(jì)結(jié)果、表抽樣、MQT方面或者運(yùn)些方面的組合出發(fā)進(jìn)行比較。[0060]在合并線程執(zhí)行方法200時(shí),假定例如用戶已經(jīng)通過界面(例如,圖形的、命令行參數(shù)或者其他方式)設(shè)定了用于輕量數(shù)據(jù)庫表比較模式的乂〇MPARE_MO呢"切換變量,指明了輕量表比較模式。例如,在一個(gè)實(shí)施例中,用戶可W從C0MPARE_M0DE變量已經(jīng)被設(shè)定為指出"METRICS"情況下的統(tǒng)計(jì)結(jié)果方面出發(fā)選擇表比較模式。另外,用戶可W從C0MPARE_M0DE變量已經(jīng)設(shè)定為指出"SAM化E"的情況下的抽樣方面出發(fā)交替地選擇表比較模式。最后,用戶可W從C0MPARE_M0DE變量已經(jīng)設(shè)定為指出MQT輕量數(shù)據(jù)庫表處理的情況下的MQT方面出發(fā)交替地選擇表比較模式。在替換實(shí)施例中,默認(rèn)設(shè)定可W指出特定輕量數(shù)據(jù)庫表比較模式。[0061]因此,例如,在圖4A中的201,合并線程獲得源數(shù)據(jù)庫的尚未比較塊TBi,并且在203,關(guān)于用戶例如利用統(tǒng)計(jì)結(jié)果或者抽樣是將切換變量乂0MPARE_M0呢"設(shè)定為指出執(zhí)行全量表比較的即化MODE還是指出輕量表比較模式,進(jìn)行第一確定。如果C0MPARE_M0DE變量指出即化MODE表比較,則該處理進(jìn)入步驟225,在步驟225,在本
技術(shù)領(lǐng)域:
內(nèi)眾所周知,執(zhí)行全模式數(shù)據(jù)塊表逐行比較。另外,在步驟203,如果C0MPARE_M0DE變量未指出即化編輯模式,則該處理進(jìn)入步驟206,W對(duì)是否已經(jīng)選擇利用統(tǒng)計(jì)結(jié)果的輕量比較模式進(jìn)行確定。因此,在步驟206,對(duì)于用戶是否將切換變量乂0MPARE_M0DE"預(yù)設(shè)為指出利用計(jì)算的數(shù)據(jù)庫統(tǒng)計(jì)結(jié)果值或者比較塊的其他度量值進(jìn)行輕量表比較的METRICS模式進(jìn)行判定。如果COMPARE,MODE變量確實(shí)指出METRICS,則該處理進(jìn)入步驟210,在步驟210,調(diào)用相應(yīng)工作線程,W提取從源表和目標(biāo)表選擇的塊的統(tǒng)計(jì)結(jié)果,W根據(jù)統(tǒng)計(jì)結(jié)果比較模式進(jìn)行輕量表比較。將參考圖5更詳細(xì)描述關(guān)于分區(qū)線程提取統(tǒng)計(jì)結(jié)果的進(jìn)一步詳情。[0062]在210從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表的相應(yīng)塊提取了相應(yīng)統(tǒng)計(jì)結(jié)果后,該處理進(jìn)入步驟215,在步驟215,合并進(jìn)程執(zhí)行從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表提取的相應(yīng)塊的統(tǒng)計(jì)結(jié)果值的實(shí)際比較。另外,返回206,如果確定切換變量乂0MPARE_M0Dr未指出METRICS,則該處理在213繼續(xù),W獲得從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表選擇的相應(yīng)MQT塊,從而根據(jù)MQT數(shù)據(jù)庫表比較模式繼續(xù)輕量表比較,此后,該處理進(jìn)入步驟215,在步驟215,合并進(jìn)程執(zhí)行源MQT表和目標(biāo)MQT表的實(shí)際比較。應(yīng)當(dāng)明白,在一個(gè)實(shí)施例中,用戶預(yù)設(shè)的乂OMPARE_MODr切換指出"MQT"輕量表比較模式,在運(yùn)種情況下,執(zhí)行MQT輕量數(shù)據(jù)庫表比較。將參考圖6更詳細(xì)描述關(guān)于工作線程提取MQT數(shù)據(jù)進(jìn)行比較的進(jìn)一步詳情。[0063]盡管圖4A未示出,但是在其他實(shí)施例中,提供能夠與基于統(tǒng)計(jì)結(jié)果的輕量表比較解決方案或者M(jìn)QT集成的基于SAMPLING的解決方案。在此描述的基于SAMPLING輕量表比較解決方案還能夠與在此合并的共有的共同未決美國(guó)專利公布No.2012/0317134和No.US2014/0372374描述的兩種方法中的任何一種集成。將參考圖7更詳細(xì)描述關(guān)于工作線程從表抽樣行從而形成塊來進(jìn)行比較,或者形成塊和相應(yīng)統(tǒng)計(jì)結(jié)果來進(jìn)行統(tǒng)計(jì)結(jié)果比較的進(jìn)一步詳情。[0064]在圖4A中的215,無論是否正在將相應(yīng)提取的源MQT表和目標(biāo)MQT表進(jìn)行比較,也無論是否正在將對(duì)應(yīng)于源塊和目標(biāo)塊的統(tǒng)計(jì)結(jié)果進(jìn)行比較,也無論是否正在將相應(yīng)源表和目標(biāo)表的抽樣行的塊進(jìn)行比較,該處理都進(jìn)入步驟218,W確定從相應(yīng)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫提取的統(tǒng)計(jì)結(jié)果、提取MQT表或者提取的抽樣數(shù)據(jù)是否匹配。[0065]作為例子,在實(shí)施例中,對(duì)相應(yīng)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表中的一個(gè)或者多個(gè)相應(yīng)塊執(zhí)行基于統(tǒng)計(jì)結(jié)果的輕量表比較。即,正在比較與每個(gè)塊關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果。例如,數(shù)據(jù)庫提供統(tǒng)計(jì)結(jié)果值,或者作為一種選擇,利用與每個(gè)源表和目標(biāo)表中的相應(yīng)塊關(guān)聯(lián)的標(biāo)準(zhǔn)函數(shù)或者用戶定義函數(shù),計(jì)算統(tǒng)計(jì)結(jié)果值(不是表中的實(shí)際數(shù)據(jù)),并且使每個(gè)統(tǒng)計(jì)結(jié)果值返回比較應(yīng)用,W在218進(jìn)行比較。[0066]如果在21如角定相應(yīng)比較值匹配,則該處理繼續(xù),并且不需要從塊提取數(shù)據(jù),因?yàn)榛诒容^數(shù)據(jù)(例如,統(tǒng)計(jì)結(jié)果)認(rèn)為源塊和目標(biāo)塊中的所有行匹配。因?yàn)闉榱诉M(jìn)行輕量表比較可W比較源表和目標(biāo)表中的另外塊,所W該處理進(jìn)入圖4B中的步驟248,在步驟248,對(duì)于合并線程是否將利用輕量表比較處理更多塊進(jìn)行確定。如果表中還存在塊,則該處理返回圖4A中的201,W重復(fù)處理下一個(gè)塊。另外,在圖4B中的248,如果不再有塊要處理,則比較應(yīng)用結(jié)束或者執(zhí)行其他處理。[0067]另外,如果21如角定從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表獲得的提取值(統(tǒng)計(jì)結(jié)果、MQT或者抽樣)不匹配,則實(shí)用程序可W通過顯示器對(duì)用戶報(bào)告源表和目標(biāo)表中不匹配的特定塊或者塊的邊界或者形成塊的行的范圍指出表差異,而不報(bào)告任何特定行的知識(shí)。在又一個(gè)實(shí)施例中,在圖4A中的21如角定不匹配后,該處理進(jìn)入步驟221,W確定是否調(diào)用存儲(chǔ)過程(USE_SP),在該存儲(chǔ)過程化SE_SP)中,為了特定塊的比較,計(jì)算基于行的校驗(yàn)和。[0068]目P,在221,如果確定未調(diào)用存儲(chǔ)過程,則該處理進(jìn)入226,W進(jìn)一步執(zhí)行基于行的處理,從而確定并且報(bào)告源表與目標(biāo)表之間識(shí)別到的差異。,運(yùn)需要在226使工作線程提取源表和目標(biāo)表,并且計(jì)算基于行的CRC,對(duì)于基于行的每個(gè)CRC,合并線程可W比較并且報(bào)告任何識(shí)別差異。此后,該處理進(jìn)入圖4B中的248,W確定是否還有塊要處理,在運(yùn)種情況下,如果確定表中沒有要處理的另外塊,則該處理將返回圖4A中的步驟201。然后,比較應(yīng)用結(jié)束或者執(zhí)行前天處理。另外,在圖4B的248,如果沒有要處理的塊,則比較應(yīng)用結(jié)束,或者執(zhí)行前提處理。[0069]另外,返回221,如果要調(diào)用處理過程,則該處理進(jìn)入230,在230,關(guān)于源表/目標(biāo)表的當(dāng)前塊的資源使用(例如,調(diào)用存儲(chǔ)過程消耗的全局臨時(shí)表空間大小)是否可W超過先前確定的最大容量闊值"GTT_MAXSZ",進(jìn)行確定。正如基于抽樣的實(shí)施例中為了產(chǎn)生塊使用的資源消耗可w大也可w小。然而,如果太大,則限制并且避免對(duì)非常大的塊應(yīng)用存儲(chǔ)過程。因此,在230,如果確定塊大小大于"GTT_MAXSZ"闊值,則該處理進(jìn)行,W執(zhí)行根據(jù)226的處理的處理。另外,如果塊大小不超過GTT_MAXSZ最大闊值,則在235,調(diào)用存儲(chǔ)過程,在235,工作線程利用R〇w_CRC_Only模式調(diào)用存儲(chǔ)過程,并且在240,在存儲(chǔ)的不記入日志的全局臨時(shí)表(GTT)中提取基于行的校驗(yàn)和結(jié)果集,對(duì)于該基于行的校驗(yàn)和結(jié)果集,合并線程可W比較鍵值和基于行的CRC并且報(bào)告任何識(shí)別的差異。此后,該處理進(jìn)入圖4B中的248,W確定是否還存在要處理的塊,在運(yùn)種情況下,如果確定表中還存在要處理的塊,則該處理將返回圖4A的步驟201。然后,比較應(yīng)用結(jié)束或者執(zhí)行其他處理。另外,在圖4B中的248,如果不存在要處理的塊,則比較應(yīng)用結(jié)束或者執(zhí)行其他處理。[0070]在一個(gè)實(shí)施例中,在步驟226和240報(bào)告識(shí)別的差異包含確定與確定的差異關(guān)聯(lián)的持久狀況。在另一個(gè)實(shí)施例中,在步驟226和240第一時(shí)間報(bào)告識(shí)別的差異觸發(fā)確定與確定的差異關(guān)聯(lián)的持久狀況。為了確定差異的狀況,可W要求多次執(zhí)行方法200。在一個(gè)實(shí)施例中,在差異再檢驗(yàn)階段,將每個(gè)差異看作單獨(dú)塊。正如在本說明書的下面所做的進(jìn)一步詳細(xì)描述,在確定檢測(cè)差異的持久狀況時(shí),提供差異再檢驗(yàn)機(jī)制。[0071]現(xiàn)在參考圖5,圖5示出為了輕量表比較而從源表數(shù)據(jù)庫和目標(biāo)表數(shù)據(jù)庫提取相應(yīng)塊的統(tǒng)計(jì)結(jié)果數(shù)據(jù)的圖4A的方法步驟210的詳情。[0072]圖5示出一個(gè)實(shí)施例中通過使對(duì)應(yīng)于為了進(jìn)行"輕"量表比較從相應(yīng)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表中提取相應(yīng)塊的統(tǒng)計(jì)結(jié)果的合并線程的工作線程運(yùn)行執(zhí)行的方法250。每個(gè)合并線程具有兩個(gè)工作線程,W并行提取統(tǒng)計(jì)結(jié)果。一個(gè)工作線程用于源表,另一個(gè)用于目柄表。[0073]如圖5所示,方法250從統(tǒng)計(jì)結(jié)果的方面出發(fā)完成輕量表比較。在該實(shí)施例中,逐塊地執(zhí)行基于統(tǒng)計(jì)結(jié)果的表比較。在第一步驟255,工作線程獲得塊的說明(specification),W利用統(tǒng)計(jì)結(jié)果執(zhí)行表比較。在一個(gè)實(shí)施例中,可W將該塊規(guī)定為表的子集或者整個(gè)表本身。根據(jù)本公開的實(shí)施例,提取的塊可W包括抽樣行和通過執(zhí)行在本說明書的下面更詳細(xì)討論的抽樣技術(shù)獲得的一個(gè)或者多個(gè)列的塊。[0074]在一個(gè)實(shí)施例中,用戶可W通過界面規(guī)定塊大小??蒞在表分區(qū)時(shí)產(chǎn)生塊。例如,根據(jù)下面描述的抽樣技術(shù),用戶可W選擇特定塊大小,并且然后實(shí)用程序能夠基于每行的儲(chǔ)存字節(jié)的數(shù)量確定每塊的表行的平均數(shù)量?;谶x擇的行數(shù)量確定該塊的行的范圍的分塊邊界值,并且在產(chǎn)生的查詢語句中提供該分塊邊界值,W獲得該塊的統(tǒng)計(jì)結(jié)果值。即,可W對(duì)從每個(gè)表中選擇行抽樣,從每個(gè)表中選擇行也可W基于范圍。使選擇行(列)聚合,W由數(shù)據(jù)庫表形成一個(gè)"塊"。該"塊"可W包含整個(gè)表,但是通常是整個(gè)表的選擇行。[0075]然后,獲得塊后,在圖5的258獲得要比較的表的塊的統(tǒng)計(jì)結(jié)果類型的說明。在一個(gè)實(shí)施例中,基于規(guī)定的統(tǒng)計(jì)結(jié)果類型,確定是否能夠利用內(nèi)置函數(shù)獲得規(guī)定的統(tǒng)計(jì)結(jié)果。因此,在260,關(guān)于是否為了計(jì)算塊的統(tǒng)計(jì)結(jié)果值而調(diào)用預(yù)定的或者內(nèi)置的數(shù)據(jù)庫例程進(jìn)行判定。例如,在263,利用數(shù)據(jù)庫中內(nèi)置的標(biāo)準(zhǔn)函數(shù),包含但并不局限于:表行計(jì)數(shù)(基數(shù)(cardinality)),列計(jì)數(shù)、平均行長(zhǎng)度W及基于行的或者基于列的校驗(yàn)和函數(shù),可W計(jì)算塊的統(tǒng)計(jì)結(jié)果值。作為一種選擇,或者此外,如265所指出的,可W利用用戶定義函數(shù)計(jì)算統(tǒng)計(jì)結(jié)果值。無論是在263通過內(nèi)置數(shù)據(jù)庫例程獲得還是在265從用戶定義函數(shù)獲得,合并線程產(chǎn)生了源塊和目標(biāo)塊的統(tǒng)計(jì)結(jié)果值后,該過程都返回圖4A中的步驟215,在步驟215,比較應(yīng)用中的合并線程最后將獲得的每個(gè)源表和目標(biāo)表中的相應(yīng)塊的統(tǒng)計(jì)結(jié)果值(例如,表行計(jì)數(shù)(基數(shù))、列計(jì)數(shù)、平均行長(zhǎng)度)進(jìn)行比較。[0076]在一個(gè)實(shí)施例中,作為基于統(tǒng)計(jì)結(jié)果的表比較方法的一部分,在263,工作進(jìn)程收集某些數(shù)據(jù)庫程序已經(jīng)收集的統(tǒng)計(jì)結(jié)果,例如,表行計(jì)數(shù)(基數(shù))、列計(jì)數(shù)、平均行長(zhǎng)度等等。在該實(shí)施例中,代替從源表和目標(biāo)表提取行,比較應(yīng)用的工作線程對(duì)數(shù)據(jù)庫發(fā)出SQL語句。該值在兩個(gè)數(shù)據(jù)庫上的數(shù)據(jù)庫的目錄表中直接可用,或者該值能夠基于實(shí)際表數(shù)據(jù)或者索引數(shù)據(jù)產(chǎn)生/計(jì)算。然后,合并線程比較兩個(gè)表的統(tǒng)計(jì)結(jié)果。在一個(gè)實(shí)施例中,面向SQL語句獲得一個(gè)或者多個(gè)上述統(tǒng)計(jì)結(jié)果(表行計(jì)數(shù)(基數(shù))、列計(jì)數(shù)、平均行長(zhǎng)度等等)。[0077]此外,由于在263,一些數(shù)據(jù)庫程序已經(jīng)收集了特定記錄統(tǒng)計(jì)結(jié)果,諸如基數(shù)和直方圖統(tǒng)計(jì)結(jié)果列、鍵基數(shù)等等,所W比較應(yīng)用工作線程對(duì)兩個(gè)數(shù)據(jù)庫上的數(shù)據(jù)庫目錄表發(fā)出SQL語句,并且合并線程比較源表和目標(biāo)表二者中的相應(yīng)塊的運(yùn)些基數(shù)和直方圖統(tǒng)計(jì)結(jié)果列、鍵基數(shù)統(tǒng)計(jì)結(jié)果。在一個(gè)實(shí)施例中,可W面向SQL語句獲得一個(gè)或者多個(gè)上述統(tǒng)計(jì)結(jié)果。[0078]在又一個(gè)實(shí)施例中,在圖5中的263或者265,比較應(yīng)用工作線程可W調(diào)用內(nèi)置統(tǒng)計(jì)結(jié)果或者(各)度量函數(shù)(例如,MAX、MIN、AVG、SUM、VARIANCE和STDDEV),可W預(yù)定義內(nèi)置函數(shù),內(nèi)置函數(shù)也可W是用戶定義函數(shù),例如,用戶能夠規(guī)定對(duì)一個(gè)或者多個(gè)列產(chǎn)生的累計(jì)值。例如,運(yùn)些另外統(tǒng)計(jì)結(jié)果可W包含但并不局限于:對(duì)所述塊到表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定平均值、對(duì)所述塊到表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定標(biāo)準(zhǔn)偏差、等等。能夠單獨(dú)地或者組合地使用運(yùn)些內(nèi)置統(tǒng)計(jì)結(jié)果或者用戶定義函數(shù)。然后,由數(shù)據(jù)庫對(duì)象減去運(yùn)些統(tǒng)計(jì)結(jié)果或者累計(jì)值。例如,可W對(duì)特定數(shù)據(jù)庫、"塊"的特定集,例如,表、或者列的特定子集、或者行的特定范圍,獲得統(tǒng)計(jì)結(jié)果值或者累計(jì)值。在一個(gè)實(shí)施例中,基于自動(dòng)確定列值范圍,將每個(gè)表分割為多個(gè)塊。每個(gè)塊具有一個(gè)或者多個(gè)累計(jì)值/統(tǒng)計(jì)結(jié)果值。在另一個(gè)實(shí)施例中,利用抽樣方法可W產(chǎn)生統(tǒng)計(jì)結(jié)果值/累計(jì)值,正如在本說明書的下面所做的更詳細(xì)描述。[0079]此外,在又一個(gè)實(shí)施例中,在圖5中的263,比較應(yīng)用工作線程可W調(diào)用(各)內(nèi)置函數(shù),W獲得并且計(jì)算運(yùn)行時(shí)間統(tǒng)計(jì)結(jié)果或者實(shí)時(shí)統(tǒng)計(jì)結(jié)果。即,可W編制比較應(yīng)用,W記錄并且接收更新次數(shù)、在每個(gè)數(shù)據(jù)庫對(duì)象的之前間隔中插入和刪除。從源表和目標(biāo)表二者之間的一致最初狀態(tài)開始,比較實(shí)時(shí)統(tǒng)計(jì)結(jié)果有助于檢測(cè)例如10秒的預(yù)定時(shí)間間隔內(nèi)的數(shù)據(jù)變化導(dǎo)致的不一致性。由于異步數(shù)據(jù)復(fù)制中存在延遲,所W當(dāng)為了比較識(shí)別時(shí)間窗口時(shí),需要外加該延遲。工作線程實(shí)現(xiàn)差異再檢驗(yàn)機(jī)制(例如,諸如專用表中的時(shí)間令牌),W解決該問題,正如本說明書的下面所做的更詳細(xì)討論。[0080]比較與該表的每個(gè)塊關(guān)聯(lián)的差異統(tǒng)計(jì)結(jié)果或者累計(jì)值提供不同認(rèn)識(shí)層面或者不同置信度的數(shù)據(jù)一致性。[0081]在又一個(gè)實(shí)施例中,提供了用于輕量表比較的基于MQT(物化查詢表)的方法。[0082]由于在計(jì)算時(shí)知道物化圖(MV或者物化查詢表MQT),所W形成含有例如用戶查詢的查詢的中間結(jié)果或者最終結(jié)果的數(shù)據(jù)庫對(duì)象。例如,其可W是位于遠(yuǎn)程的數(shù)據(jù)的本地拷貝,其也可W是表或者連結(jié)結(jié)果的行和/或者列的子集,還可W是基于表數(shù)據(jù)的聚合的累計(jì)。可W將MV看作映射選擇表的結(jié)果的函數(shù)。因此,在一個(gè)實(shí)施例中,根據(jù)如下考慮MV圖(例如,表1):[0083]MV(Tablel)=func(Table_l);[0084]或者作為一種選擇,根據(jù)如下考慮:[00化]MV(Tablel,Table2..Table_n)=func(Table_l,Table_2..Table_n),[00化]其中函數(shù)func能夠是諸如聚合函數(shù),諸如sum()、average()、max()、min()、count()、join(例如,多個(gè)表化ble_l、化ble_2等等)。例如,MV或者M(jìn)QT可W是兩個(gè)或者多個(gè)表的合并或者連結(jié)。MV或者M(jìn)QT是分別存儲(chǔ)的表。[0087]-些數(shù)據(jù)庫保持物化查詢表,W將預(yù)計(jì)算的查詢結(jié)果或者子查詢結(jié)果存儲(chǔ)于獨(dú)立表中,W加快查詢處理的速度。非常常見的是,MQT表存儲(chǔ)基表中的數(shù)據(jù)聚合的結(jié)果。通常,數(shù)據(jù)庫中存在當(dāng)更新數(shù)據(jù)時(shí),或者當(dāng)周期性地刷新MQT數(shù)據(jù)時(shí)遞增更新MQT的機(jī)制。[0088]當(dāng)更新其初始源表時(shí),更新/刷新MV。在大多數(shù)DBMS(數(shù)據(jù)庫管理系統(tǒng))中,運(yùn)由數(shù)據(jù)庫自動(dòng)觸發(fā)和管理。例如,作為對(duì)初始表中執(zhí)行的任何DELETE、INSERT或者UPDATE的響應(yīng),數(shù)據(jù)庫自動(dòng)刷新和更新MQT。因此,在一個(gè)實(shí)施例中,對(duì)于每個(gè)要比較的表或者每個(gè)表塊,基于MQT的輕量表比較要求MQT。[0089]在輕量表比較中,存在采用MQT的兩個(gè)獨(dú)立方面。[0090]1)第一方面是僅將MQT定義為初始表的子集。"子集"可W是原始表僅在表列/表屬性的子集上的投影。該子集還能夠是行或者分區(qū)的子集。與全表比較相比,運(yùn)種MQT具有比初始表小的大小,并且在諸如I/O、存儲(chǔ)器腳印和計(jì)算的計(jì)算成本方面,源MQT和目標(biāo)MQT的比較不昂貴。[0091]下面是為了對(duì)整個(gè)源表和目標(biāo)表執(zhí)行全面比較而創(chuàng)建的物化圖查詢的運(yùn)種定義的一個(gè)非限制性例子。在運(yùn)種典型用戶查詢中,假定源數(shù)據(jù)庫提供基于行的校驗(yàn)和函數(shù)C肥CKSUM(*)。對(duì)于典型的源數(shù)據(jù)庫表MQT_l_s創(chuàng)建:[0092]CreateMQT_l_sas(沈LECT邸¥_(:化1,邸¥_(:化2,(:皿0(5刪(*)曰8R0W_CRCFROMSCH1.TAB1_S0URCE);[0093]其中KEY_C0L1、KEY_C0L2是第一表(TAB1_S0URCE)中的列選擇。對(duì)于典型目標(biāo)數(shù)據(jù)庫表MQT_l_t創(chuàng)建:[0094]CreateMQT_l_tas沈LECT?。(:化1,?。(:化2,(:皿0(5刪(*)日8R0W_CRCFROMSC肥.TABl-TARGET)。[0095]其中KEY_C0L1、KEY_C0L2是第一表(TAB1_TARGET)中的列選擇。通過退出RDBMS機(jī)制,實(shí)時(shí)處理MQT刷新。[0096]2)第二方面是例如僅為了比較的目的,通過提取預(yù)定義MQT的結(jié)果,修改基于統(tǒng)計(jì)結(jié)果的比較。運(yùn)樣的優(yōu)點(diǎn)是利用MQT,能夠定義適合特定統(tǒng)計(jì)結(jié)果的、甚或比RDBMS統(tǒng)計(jì)結(jié)果目錄提供的更負(fù)責(zé)/更綜合的統(tǒng)計(jì)結(jié)果函數(shù)。[0097]用戶定義MQT表的定義的一個(gè)非限制性例子,W在對(duì)特定塊或者整個(gè)表進(jìn)行基于統(tǒng)計(jì)結(jié)果的比較時(shí)使用,對(duì)于源數(shù)據(jù)庫表,物化查詢?nèi)缦拢篬009引CreateMQT_2_sas(SELECTC0UNT(*)asR0W_C0UNT,SUM(C0Ll)asSUM_C0L1FROMSCH1.TAB1_S0URCE);[0099]其中實(shí)現(xiàn)決定行(COUNT(*))的數(shù)量的行累計(jì)統(tǒng)計(jì)結(jié)果函數(shù)SELECTCOUNT(*),并且對(duì)于目標(biāo)數(shù)據(jù)庫表:[0100]CreateMQT_2_tasSELECTC0UNT(*)asROW-COUNT,SUM(C0Ll)asSUM_C0L1FROMSC肥.TABl-TARGET。[0101]引入了MQT后,表比較應(yīng)用能夠在兩個(gè)相應(yīng)MQT表之間進(jìn)行逐行比較,代替提取表和計(jì)算基于行的校驗(yàn)和。如果MQT的內(nèi)容不匹配,則比較應(yīng)用能夠?qū)μ囟ㄐ谢蛘咛囟▔K或者整個(gè)表采用正規(guī)比較方案,而無需MQT。[0102]通過退出畑BMS機(jī)制,能夠?qū)崟r(shí)刷新MQT和畑BMS統(tǒng)計(jì)結(jié)果。因此,基于MQT的解決方案的不同之處在于,MQT表能夠存儲(chǔ)查詢的結(jié)果集,并且當(dāng)發(fā)生任何變化時(shí),能夠立即刷新該查詢的結(jié)果集。對(duì)于物化查詢表,可W使對(duì)初始表所做的改變,例如,作為DELETE、INSERT或者UPDATE表操作的一部分級(jí)聯(lián)。對(duì)于表比較,要求每個(gè)要比較的表或者每個(gè)表塊的MQT。[0103]圖6示出在一個(gè)實(shí)施例中為了利用MQT(物化查詢表)執(zhí)行表比較圖4A的數(shù)據(jù)提取步驟213的方法流程270的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,在基于抽樣的解決方案或者基于統(tǒng)計(jì)結(jié)果的解決方案中或者基于原始全模式比較解決方案中,能夠使用基于MQT的解決方案。該方法利用數(shù)據(jù)比較工具定義并且創(chuàng)建MQT。由于用戶可能已經(jīng)具有已經(jīng)對(duì)應(yīng)用/查詢目的定義的類似MQT,所W運(yùn)里的方法可應(yīng)用于并且不排除使用用戶定義的MQT代替定義MQT的比較工具。[0104]在一個(gè)實(shí)施例中,逐表執(zhí)行基于MQT的表比較。因此,在一個(gè)實(shí)施例中,在圖6的275確定是否存在與源MQT關(guān)聯(lián)的特定統(tǒng)計(jì)結(jié)果,并且對(duì)于輕量表比較,可W比較與目標(biāo)MQT關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果。如果在275確定沒有基于統(tǒng)計(jì)結(jié)果的比較要執(zhí)行,則該處理進(jìn)入278,在278,創(chuàng)建或者檢索定義為初始對(duì)應(yīng)于全源數(shù)據(jù)庫和目標(biāo)DB的子集的MQT表。例如,該步驟可W規(guī)定或者獲得上面描述的MQT_l_s表和MQT_l_t表。然后,該處理返回圖4A的步驟215,合并線程實(shí)際執(zhí)行源MQT表和目標(biāo)MQT表的基于輕量表的比較。[0105]返回圖6的步驟275,如果有基于特定統(tǒng)計(jì)結(jié)果的比較的說明,則該處理進(jìn)入步驟280,W確定是否已經(jīng)對(duì)基于統(tǒng)計(jì)結(jié)果的表比較定義了現(xiàn)有的或者用戶定義的MQT表。如果沒有定義在前用戶定義的MQT表,則該處理進(jìn)入步驟282,在步驟282,創(chuàng)建或者獲得定義的MQT表,該定義的MQT表具有適合對(duì)應(yīng)于源表和目標(biāo)表中的特定塊的或者整個(gè)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的統(tǒng)計(jì)結(jié)果函數(shù)。然后,可W獲得源MQT表/目標(biāo)MQT表中的統(tǒng)計(jì)結(jié)果用于比較。另夕h在圖6的284,根據(jù)具有適合相應(yīng)源數(shù)據(jù)庫/目標(biāo)數(shù)據(jù)庫的統(tǒng)計(jì)結(jié)果函數(shù)的用戶定義MQT源表/目標(biāo)表的選擇行/列,檢索統(tǒng)計(jì)結(jié)果。例如,對(duì)整個(gè)表的基于統(tǒng)計(jì)結(jié)果的比較包含上述物化查詢MQT_2_s和MQT_2_t。在另一個(gè)例子中,MQT表存儲(chǔ)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫上的每個(gè)鍵值的行的列的總和和計(jì)數(shù)。比較應(yīng)用的合并線程比較MQT的內(nèi)容。[0106]在兩種情況下,對(duì)源數(shù)據(jù)庫MQT表和目標(biāo)數(shù)據(jù)庫MQT表獲得統(tǒng)計(jì)結(jié)果后,該處理返回圖4A的步驟215,W執(zhí)行基于統(tǒng)計(jì)結(jié)果的表比較。運(yùn)可W調(diào)用基于統(tǒng)計(jì)結(jié)果的表比較處理,諸如在此參考圖4A所述。[0107]結(jié)合抽樣,MQT甚至能夠位于表中的行的SAMPLING的頂上,因此,其能夠用作原始表的預(yù)計(jì)算的累計(jì)表。在一個(gè)實(shí)施例中,每行能夠?qū)?yīng)于鍵列值的特定范圍。[0108]在又一個(gè)實(shí)施例中,提供了一種用于輕量表比較的基于抽樣的方法。在一個(gè)實(shí)施例中,提供了一種基于抽樣的表的分區(qū)解決方案。對(duì)于輕量表比較,執(zhí)行抽樣,W確定哪個(gè)表和表的哪個(gè)子集需要比較?;诔闃拥姆椒膫€(gè)是基于行的、基于列的、基于塊的、基于頁的、基于分區(qū)的、基于表的、基于表空間的或者基于數(shù)據(jù)庫中的一個(gè)。[0109]在在此合并的US20140372374和US20120317134的公知框架中,并且如上所述,分區(qū)器是掃描表并且產(chǎn)生合并器的塊的線程。將產(chǎn)生的塊插入稱為task如eue隊(duì)列。合并線程僅比較化sk如eue中可用的塊。在一個(gè)實(shí)施例中,當(dāng)采用抽樣時(shí),分區(qū)器僅隨機(jī)拾取少量塊,并且將運(yùn)些塊插入taskQueue,代替產(chǎn)生/插入所有塊。在另一個(gè)實(shí)施例中,當(dāng)采用抽樣時(shí),分區(qū)器將產(chǎn)生由隨機(jī)選擇的行構(gòu)成的塊。[0110]因此,當(dāng)產(chǎn)生特定塊SELECT語句時(shí),該方法還可W隨機(jī)選擇比較哪列。因此,不需要比較所有塊的所有列。[0111]當(dāng)每塊含有一行并且僅含有一行時(shí),其是基于行的抽樣。[0112]當(dāng)每塊對(duì)應(yīng)于整個(gè)表分區(qū)時(shí),其是基于分區(qū)的抽樣。或者當(dāng)選擇分區(qū)時(shí),能夠?qū)υ撨x擇分區(qū)產(chǎn)生多個(gè)較小的塊。[0113]在一個(gè)實(shí)施例中,選擇規(guī)則能夠是:1)完全隨機(jī),并且在一個(gè)實(shí)施例中,基于條件公式:[0114]rand()>sample_rate[0115]其中sample_rate是用戶規(guī)定的或者機(jī)器預(yù)定的預(yù)定義值;2)對(duì)先前未比較的塊完全隨機(jī),即,在該實(shí)施例中,需要將已經(jīng)比較了哪個(gè)塊記錄在先前比較歷史中;3)通過預(yù)計(jì)算行數(shù)并且然后每隔第η行選擇等同子集,也可W實(shí)現(xiàn)抽樣;4)利用分布(直方圖)、優(yōu)選序列或者鍵值、基于時(shí)間的(更近更新的表段)、基于循環(huán)的等等,抽樣選擇判據(jù)能夠是隨機(jī)的;或者5)在一個(gè)實(shí)施例中,一些DBMS引擎包含在查詢樹的底部?jī)H規(guī)定可能行的抽樣的能力。例如,DB2LUW包含TABLESAMPLE函數(shù),運(yùn)樣允許人或者利用行級(jí)Bernoulli抽樣或者利用系統(tǒng)頁級(jí)抽樣規(guī)定抽樣概率。[0116]在基于抽樣的輕量表比較方法中,代替比較表中的或者表的所有列中的所有記錄,使用表數(shù)據(jù)的抽樣。抽樣在如下兩個(gè)方面顯著降低成本:1)其僅存取表記錄的子集,并且減少后續(xù)數(shù)據(jù)處理量;2)特定抽樣選項(xiàng)發(fā)出S化語句,該S化語句的執(zhí)行比全比較S化語句的執(zhí)行廉價(jià)。例如,在CPU時(shí)間方面,"Se1ectcount(*)"語句(例如,僅用于計(jì)數(shù)的提取記錄)能夠比"select*"(選擇全部)語句廉價(jià),因?yàn)樵谶\(yùn)行時(shí)找(接口)的較高級(jí)別,較少的數(shù)據(jù)需要通過,并且因此具有較短的指令通路長(zhǎng)度。[0117]因此,在一個(gè)方面,對(duì)于相應(yīng)列,表分區(qū)不執(zhí)行分類和從表提取所有行,相反,在本說明書的實(shí)施例中,該方法執(zhí)行分類并提取抽樣行,并且利用抽樣行確定每個(gè)塊的邊界。[0118]圖7示出在一個(gè)實(shí)施例中基于抽樣的輕量表比較方法285的一個(gè)方案。如圖7所示,使用抽樣獲得塊需要獲得抽樣集,W得到邊界值、抽樣率和隨機(jī)函數(shù),從而獲得要求大小的塊。獲得邊界值后,產(chǎn)生S化語句,W從源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫提取塊。[0119]如圖7所示,為了輕量表比較形成塊的基于抽樣的方法285包含第一步驟288,該第一步驟288示為確定表分區(qū)線程是否已經(jīng)收到表示用戶對(duì)每個(gè)塊規(guī)定的抽樣行數(shù)量的SAMPLE_PER_BLOCK參數(shù)值。如果收到的SAMPLE_PER_BLOCK參數(shù)被用戶定義,則該處理進(jìn)入步驟290。另外,如果收到的SAMPLE_PER_BLOCK參數(shù)值未被用戶定義,則在289,系統(tǒng)獲得默然SAMPLE_PER_BLOCK參數(shù)值,并且然后,進(jìn)入步驟290。在一個(gè)實(shí)施例中,默然SAMPLE_PER_BLOCK塊值是50。[0120]在圖7的步驟290,根據(jù)如下,由SAM^E_PER_BL0CK參數(shù)值求得抽樣闊值SAM^E_THRE甜OLD:[01別]SAMPLE_THRES冊(cè)LD=max(miη(max_samp1e_thresho1d,SAMPLE_PER_BLOCK/num_rows_per_block),min_sample_threshold)[0122]其中num_;rows_per_block,max_sample_threshold和min_sample_threshold是由程序確定/調(diào)節(jié)并且收到的或者由用戶規(guī)定的值。[0123]然后,在圖7的步驟295,產(chǎn)生為了形成塊從表提取抽樣使用的SQL查詢。在一個(gè)典型實(shí)施例中,為分類和提取行產(chǎn)生的S化查詢可W是:[0124]SELECTBL0CK_BY_C0L1,BL0CK_BY_C0L2FROMS0URCE_TABW皿RERAND〇<SAMPLE_THRES冊(cè)LD0畑邸BY1,2[0125]其中RAND()函數(shù)返回介于0與1之間的隨機(jī)浮點(diǎn)值。假定非零值的SAM^E_PER_BLOCK,則SAMPLE_THRES冊(cè)LD是介于0.00001與1之間的浮動(dòng)值。例如,DBMS引擎提供內(nèi)置隨機(jī)值,生成函數(shù)(例如,DB2Z/0S)提供RAND(),運(yùn)樣返回介于0與1之間的隨機(jī)浮點(diǎn)值。例如,利用隨機(jī)選擇,下面的查詢將返回整個(gè)表的約1%行:[01%]SELECTBL0CK_BY_C0L1,BL0CK_BY_C0L2FROMTABLE1W肥RERAND()<0.0!0畑邸BY1[0127]然后,在圖7的398,根據(jù)抽樣闊值,確定哪些行將用于塊的邊界行。第(n-1)邊界切割和第η邊界切割能夠用于形成第η塊。整個(gè)查詢結(jié)果集中的第η邊界切割的行數(shù)等于:[0128]η巧MPLE_THRES冊(cè)LD*num_rows_per_block[0129]因此,對(duì)于塊生成,特別是當(dāng)行數(shù)巨大并且分塊列的總長(zhǎng)度不小時(shí),提取所有分塊值非常昂貴。為了縮短CPU時(shí)間和歷時(shí),在鍵值檢索中采用抽樣。代替提取所有分塊列值,表分區(qū)線程僅提取稱為抽樣的行的子集。利用隱藏參數(shù)SAMPLE_PER_^0CK,用戶能夠控制每塊的預(yù)期抽樣數(shù)?;诔闃荧@得塊。[0130]在又一個(gè)實(shí)施例中,利用分布(直方圖)、優(yōu)選序列或者鍵值、基于時(shí)間的(更近更新的表段)、基于循環(huán)的等等,抽樣選擇判據(jù)能夠是隨機(jī)的。在一個(gè)實(shí)施例中,一些DBMS引擎包含在查詢樹的底部?jī)H規(guī)定可能行的抽樣的能力。例如,DB2LUW包含TABLESAMPLE函數(shù),運(yùn)樣允許用戶或者利用行級(jí)Bernoulli抽樣或者利用系統(tǒng)頁級(jí)抽樣規(guī)定抽樣概率。[0131]在另一個(gè)實(shí)施例中,通過預(yù)計(jì)算行數(shù)并且每隔η行選擇等同子集,通過線上分析處理(0LAP)函數(shù)也可W實(shí)現(xiàn)抽樣。[0132]應(yīng)當(dāng)明白,在一個(gè)方面,所描述的Ξ種不同輕量表比較技術(shù)能夠單獨(dú)地使用也可W組合,例如,將基于統(tǒng)計(jì)結(jié)果的輕量表比較和為了大表分區(qū)而抽樣的數(shù)據(jù)組合。[0133]當(dāng)輕量比較報(bào)告不一致性時(shí),能夠?qū)⑷:容^(full-bloomcomparison)用于不規(guī)則檢測(cè)。在一個(gè)實(shí)施例中,當(dāng)抽樣的數(shù)據(jù)庫對(duì)象的累計(jì)值/統(tǒng)計(jì)結(jié)果值不匹配時(shí),開始比較特定數(shù)據(jù)庫對(duì)象的原始數(shù)據(jù),W確定哪個(gè)行/哪個(gè)列不同。[0134]抽樣再檢驗(yàn)[0135]如上所述,合并形成是負(fù)責(zé)發(fā)現(xiàn)源表與目標(biāo)表之間的差異的實(shí)際代理。將發(fā)現(xiàn)的所有運(yùn)些差異插入存儲(chǔ)器內(nèi)隊(duì)列QueueDiff^diffRepoder線程處理該差異,并且然后,將結(jié)果記錄在DIFF表中。[0136]在一個(gè)方面,輕量表比較采用活比較應(yīng)用,該活比較應(yīng)用將在此合并的未決專利申請(qǐng)的IBMin化sphere?比較(ASNTDIFF)實(shí)用程序擴(kuò)展到對(duì)正活動(dòng)地更新的兩個(gè)表進(jìn)行比較,并且然后,將在塊中檢測(cè)到的任何差異進(jìn)行再比較,W在正在比較塊時(shí),核算復(fù)制等待時(shí)間和可能對(duì)數(shù)據(jù)產(chǎn)生的在線變化。[0137]由于僅當(dāng)正在比較一對(duì)塊時(shí)既從源又從目標(biāo)讀出數(shù)據(jù),所W降低了對(duì)包含在運(yùn)些塊中的行產(chǎn)生變化的概率。在該比較中包含比較應(yīng)用訪問運(yùn)對(duì)塊之前發(fā)生的任何變化,不考慮對(duì)一組塊的比較結(jié)束之后發(fā)生的任何變化。[0138]當(dāng)復(fù)制延遲之后再檢驗(yàn)時(shí),如果數(shù)據(jù)仍不同,則考慮差異是持久性的,并且當(dāng)?shù)谝淮伪容^數(shù)據(jù)時(shí),差異最初不由未提交事務(wù)導(dǎo)致。[0139]因此,配置用于比較廣域網(wǎng)分離的非常大表的高度可伸縮性表比較應(yīng)用,W假定在比較時(shí)對(duì)源表和目標(biāo)表進(jìn)行更新。因此,實(shí)用程序能夠檢測(cè)與異步復(fù)制處理等待時(shí)間導(dǎo)致的瞬間差異不同的持久性差異。在并行模式下,該方法包含將每個(gè)表劃分為行的塊,該行或者1)由在此描述的每個(gè)抽樣技術(shù)產(chǎn)生,或者2)由分塊列的值范圍劃界,或者3)塊范圍的源表和目標(biāo)表中的行,與其他塊的行中的進(jìn)行獨(dú)立比較。因此,并行執(zhí)行多個(gè)塊比較。在一個(gè)實(shí)施例中,通過考慮到行的大小,該方法確定塊中的最佳行數(shù)。此外,在一個(gè)實(shí)施例中,表大小確定快的數(shù)量。對(duì)于該塊的范圍中的第一行和最后一行或者連續(xù)塊的邊界行,分塊列值區(qū)分塊。如本說明書的上面所述,安排塊對(duì),W對(duì)合并線程池服務(wù)的隊(duì)列進(jìn)行比較。每個(gè)合并器一次比較一對(duì)塊。[0140]在一個(gè)實(shí)施例中,該方法將在塊中檢測(cè)到的任何差異進(jìn)行再比較,W在正在比較該塊時(shí),核算復(fù)制等待時(shí)間和對(duì)數(shù)據(jù)產(chǎn)生的在線變化。不再訪問當(dāng)比較塊時(shí)相同的數(shù)據(jù)。同樣,對(duì)于整個(gè)表,在已經(jīng)確定兩行相同后,不再做比較。[0141]當(dāng)比較活數(shù)據(jù)時(shí),比較小塊具有顯著優(yōu)勢(shì)。因?yàn)閮H當(dāng)比較一對(duì)塊時(shí),既從源又從目標(biāo)讀出數(shù)據(jù),所W包含在運(yùn)些塊中的行發(fā)生變化的概率降低。比較中包含比較應(yīng)用訪問該對(duì)之前的任何變化,而不考慮對(duì)該塊完成比較之后發(fā)生的任何變化。[0142]正如在此要查閱的,提供下面的定義:[0143]DOUBTRJL(D):差異可W是持久性的,也可W非持久性的。當(dāng)?shù)谝淮伪容^后,差異相同時(shí),其是最初持久性類型的。[0144]UNKNOWN(U):差異可W是持久性的,也可W是非持久性的。在活模式比較中,如果差異不是持久性的,則可能的原因只是禁止長(zhǎng)時(shí)間提交事務(wù)或者利用游標(biāo)穩(wěn)定性(CS)(或者較高管理)提取的數(shù)據(jù)。[0145]TIMEOUT(T):差異可W是持久性的,也可W是非持久性的。達(dá)到再比較極限,并且行仍不同,因?yàn)橄嗤校矗哂邢嗤I值的行)保持正在更新而非正在提交。比較極限由RETRY_C0MPARE參數(shù)控制。[0146]陽RSISTENT(P):差異是持久性的。當(dāng)復(fù)制延遲之后再檢驗(yàn)時(shí),該數(shù)據(jù)仍存在差異,并且該差異是當(dāng)?shù)谝淮伪容^該數(shù)據(jù)時(shí)最初由未提交事務(wù)導(dǎo)致。[0147]RETRY_COMPARE_WA];T=minimum_wait_in_seconds:用于規(guī)定比估計(jì)的最大端到端等待時(shí)間和含有在該環(huán)境下正在比較的表的最長(zhǎng)運(yùn)行事務(wù)的時(shí)間之和大的值的外部參數(shù)。比較應(yīng)用利用該值確定何時(shí)再比較差異,W為要復(fù)制的變化留夠時(shí)間。即,能夠在特定時(shí)間窗口內(nèi)估計(jì)復(fù)制等待時(shí)間化ND2END_LATENCY),并且該等待時(shí)間能夠用于確定RETRY_C0MPARE_WA口的值(請(qǐng)參見圖8)。[0148]如果在其復(fù)制到目標(biāo)之前實(shí)用程序再比較差異,則可能報(bào)告錯(cuò)誤差異。在一個(gè)方面,實(shí)用程序可W返回,W僅比較先前比較中的差異。在一個(gè)例子中,RETRY_COMPARE_WAIT的默認(rèn)值是2,并且最小值是1。[0149]RETRY_COMPARE=num_re化ies:用于規(guī)定實(shí)用程序?qū)⒃诜艞壷氨3肿兓男斜容^多少次的外部參數(shù)。如果達(dá)到比較極限并且行因?yàn)橄嗤斜3指氯圆煌?,則將該差異報(bào)告為DIFF表中的T(暫停比較)。在一個(gè)例子中,默認(rèn)值是2,并且最小值是0。[0150]在一個(gè)實(shí)施例中,比較應(yīng)用將未提交讀出(UR)隔離級(jí)別用于查詢數(shù)據(jù),W避免與用戶應(yīng)用爭(zhēng)用鎖。在運(yùn)種模式下,返回未提及數(shù)據(jù),可W回滾該數(shù)據(jù),因此,比較應(yīng)用不包含U財(cái)莫式下檢測(cè)到的差異。利用游標(biāo)穩(wěn)定性(CS)或者較高隔離再檢驗(yàn)差異,W保證回滾數(shù)據(jù)和飛行事務(wù)不包括在最終比較中。游標(biāo)穩(wěn)定性模式是允許共享鎖布置于提取的行上,使得當(dāng)提取另一行時(shí)或者當(dāng)游標(biāo)關(guān)閉時(shí)釋放共享鎖的隔離級(jí)別。允許另一個(gè)處理,W將共享鎖布置于相同行上,但是不允許處理獲取互斥鎖,W修改行中的數(shù)據(jù)。[0151]如果未授權(quán)比較應(yīng)用在游標(biāo)穩(wěn)定(CS)模式或者較高隔離級(jí)別下查詢數(shù)據(jù),則利用"U"報(bào)告其中一些可能是由回滾事務(wù)或者飛行事務(wù)導(dǎo)致的所有差異,表示對(duì)DIFF輸出表的DIFF_PERSISTENCE列未知。利用參數(shù)NUMTHREADS能夠調(diào)節(jié)同時(shí)CS讀出的數(shù)量,該參數(shù)NUMT皿EADS規(guī)定允許比較應(yīng)用創(chuàng)建的線程的數(shù)量。每次CS讀出僅調(diào)用一個(gè)鍵值。在一個(gè)實(shí)施例中,同時(shí)CS讀出的最大數(shù)量等于NUMTHREADS/3-1。在一個(gè)實(shí)施例中,能夠設(shè)定參數(shù)CS_READ=YIN,W在允許共享鎖布置于提取行上的CS隔離級(jí)別,防止比較應(yīng)用發(fā)出任何SELECT語句,使得當(dāng)提取另一行或者關(guān)閉游標(biāo)時(shí),釋放共享鎖。默認(rèn)CS值是ΥΓ是"),運(yùn)意味著,允許利用CS隔離級(jí)別提取。在一個(gè)實(shí)施例中,通過在比較應(yīng)用調(diào)用后執(zhí)行CS模式查詢,手動(dòng)檢驗(yàn)報(bào)告為未知的差異。[0152]為了有效再比較檢測(cè)到的差異,通過記錄檢測(cè)到的每個(gè)差異的64位校驗(yàn)和(CRC),并且該值與新CCRC(基于比較的校驗(yàn)和)列相加,比較應(yīng)用對(duì)檢測(cè)到的每個(gè)差異保持CRC。確定了該差異的持久性類型后,將該差異和CCRC值記錄到DIFF輸出表中。每個(gè)CCRC值是對(duì)于相同鍵值位于源的行的32位校驗(yàn)和(CRC)和位于目標(biāo)的行的32位校驗(yàn)和的并置。CCRC唯一地識(shí)別差異。[0153]圖8是示出在用于復(fù)制時(shí)使用RETRY_COMPARE_WAIT時(shí)間令牌的時(shí)序圖375的一個(gè)實(shí)施例。在圖375中,源數(shù)據(jù)庫表的最初數(shù)據(jù)變化示于378。異步復(fù)制不開始捕獲或者重放數(shù)據(jù)變化,直到在諸如時(shí)間380指出的源表提交事務(wù)或者變化,從最初變化開始的時(shí)間表示"臟"UR讀出間隔。對(duì)于UR數(shù)據(jù)中的數(shù)據(jù)提取,異步復(fù)制導(dǎo)致的變壞從諸如380的發(fā)出提供之前源表處的最初數(shù)據(jù)變化開始,并且在諸如387的在目標(biāo)表發(fā)出提交之前的相應(yīng)數(shù)據(jù)變化結(jié)束。因此,復(fù)制延遲,例如,復(fù)制端到端延遲還應(yīng)當(dāng)包含源表處的提交時(shí)間與目標(biāo)表處的相應(yīng)提交之前之間的相關(guān)事務(wù)的整個(gè)時(shí)間窗口。RETRY_COMPARE_WA口參數(shù)表示在圖8的382的第一UR提取與圖8的388的第二UR提取之間示出的時(shí)長(zhǎng)。應(yīng)當(dāng)將RETRY_COMPARE_WA口的值設(shè)定為大于復(fù)制延遲的值。[0154]圖9示出用于確定持久性類型為"懷疑"的特定差異的實(shí)際持久性類型的方法300。在一個(gè)實(shí)施例中,能夠在活更新環(huán)境下進(jìn)行該確定。在所示的實(shí)施例中,參數(shù)rETRY_C0MPARE_WAIT=n秒,例如,利用1秒的默認(rèn)值設(shè)定η,該值設(shè)定比較應(yīng)用在再次對(duì)于差異比較行之前等待的時(shí)間。[0155]因此,在305,合并線程發(fā)現(xiàn)差異(i=l),例如,其中i是指出對(duì)于該差異已經(jīng)執(zhí)行的差異比較的次數(shù)的遞增索引。將該差異的持久性類型標(biāo)記為"懷疑"。[0156]經(jīng)歷了時(shí)間間隔RETRY_COMPARE_WAIT后,下一個(gè)步驟308對(duì)相應(yīng)行執(zhí)行再比較。因此,延遲之后,諸如在圖8的時(shí)間388,比較應(yīng)用再次在UR模式下提取行、再比較CRC。該再計(jì)算可W調(diào)用函數(shù),W該(運(yùn)些)行確定是否基于行的CRCSsrc==基于行的CRCOtgt。該方法還執(zhí)行使索引i遞增1,W指出已經(jīng)執(zhí)行了又一個(gè)再比較。[0157]在312,如果匹配,即,確定CCRC相同,則仍存在相同差異。該差異不是持久性差異,如354所示。運(yùn)可W由源處的長(zhǎng)時(shí)間運(yùn)行的未提交事務(wù)獲得,或者因?yàn)橛行?fù)制延遲大于RETRY_COMPARE_WA口秒。[0158]然后,在315,該方法對(duì)所執(zhí)行的在先比較化R模式下)與最后比較之間的差異進(jìn)行比較。該再比較可W調(diào)用函數(shù),W確定新計(jì)算的CCRC是否與存儲(chǔ)器中的CCRC匹配,即,對(duì)于該行,是否基于計(jì)算的校驗(yàn)和CCRC@C==CCRC@C(i-1)。[0159]在318,如果不匹配,即,確定CCRC差異在當(dāng)前比較和在先比較之間存在匹配,則該處理進(jìn)入321,在321,對(duì)于再試次數(shù),關(guān)于是否當(dāng)前比較計(jì)數(shù)i-K=RETRY_COMPARE極限進(jìn)行確定。如果在321,確定未達(dá)到再試極限的次數(shù),即,i-K=RETRY_COMPARE評(píng)估"是",則該處理返回步驟308,在步驟308,執(zhí)行進(jìn)一步再比較,并且重復(fù)308之后的處理步驟。另外,如果已經(jīng)達(dá)到再試極限,即,確定當(dāng)前索引i-K=RETRY_COMPARE評(píng)估"否",則確定persistence_type已經(jīng)暫停,即,是值T。即,參數(shù)RETRY_COMPARE=n規(guī)定如果已經(jīng)達(dá)到比較極限并且因?yàn)橄嗤斜3指滦腥圆煌?,則在放棄之前,比較應(yīng)用將對(duì)保持變化的行再比較多少次,在DIFF表中,對(duì)于暫停比較,將差異報(bào)告為叩'。[0160]返回步驟318,如果確定匹配,即,CCRC的差異在當(dāng)前比較與在先比較之間不存在匹配,則該處理進(jìn)入圖9的步驟325,在步驟325,該方法確定是否已經(jīng)將CS_READ參數(shù)設(shè)定為"是"(Y),即,指出CS隔離級(jí)別(游標(biāo)穩(wěn)定性)模式。如果在325,確定CS_READ參數(shù)已經(jīng)設(shè)定為"是",則在328,再次將CS或者較高隔離級(jí)別用于再比較,提取行。另外,在325,如果在325確定CS_READ參數(shù)未設(shè)定為"是",則確定persistence_type未知,即,是值U。[0161]因此,利用在328正在再比較的行,在330,對(duì)于該(運(yùn)些)行確定是否基于行的CRC@src==基于行的CRCOtgt。如果匹配,則在354,確定該差異不是永久性的差異,并且對(duì)該差異賦予NOT永久性的指示符。因此,如果將行與CS比較并且不存在差異,則運(yùn)意味著該差異由現(xiàn)在提交的或者復(fù)制的飛行事務(wù)或者該事務(wù)是回滾而導(dǎo)致。無論哪種方式,差異都消失。[0162]另外,在330,如果確定該行的基于行的CRC@s;rc==基于行的CRCOtgt不匹配,貝U該處理進(jìn)入步驟335,在步驟335,通過比較在先比較化R模式下)和最后比較之間的差異,再次執(zhí)行基于比較的校驗(yàn)和比較,即,是否基于比較的校驗(yàn)和CCRC@C==CCRC@C(i-1)。[0163]然后,在338,確定在比較在先比較(CS)與在先(i-1)比較之間的差異中是否匹配。如果確定不匹配,即,差異的相關(guān)行從最初比較發(fā)生變化,則該處理進(jìn)入步驟321,在步驟321,通過對(duì)RETRY_C0MPARE參數(shù)評(píng)估當(dāng)前值i,關(guān)于當(dāng)前再試比較級(jí)別,再次進(jìn)行確定。根據(jù)321的該評(píng)估,該處理可W進(jìn)入步驟308,在UR模式下進(jìn)一步再比較,或者在已經(jīng)達(dá)到RETRY_COMPARE極限的情況下,進(jìn)入步驟351,在步驟351,WT(暫停)指出persistence_type。[0164]如果在338,基于比較的CCRC@C==CCRC@C(i-l)導(dǎo)致匹配,則該處理進(jìn)入步驟340,在步驟340,比較應(yīng)用在間隔RETRY-C0MPARE_WA口之后再一次在UR模式下提取行、再比較CRC、W及將新CCRC與DIFF表中的CCRC比較。該再比較可W調(diào)用函數(shù)W對(duì)該(運(yùn)些)行確定是否基于行的CRC@s;rc==基于行的CRCOtgt。[0165]如果在%3確定匹配,則在345,確定該差異不是永久性差異,并且對(duì)該差異賦予NOT永久性的指示符。然而,如果在343確定不匹配,則該處理進(jìn)入步驟347,在步驟347,再次對(duì)該比較與最后比較之間的差異進(jìn)行比較,即,基于比較的校驗(yàn)和CCRC@C==CCRC@C(i-l)是否導(dǎo)致匹配。[0166]進(jìn)入350,如果確定基于比較的校驗(yàn)和CCRC@C==CCRC@(i-1)導(dǎo)致不匹配,則該處理返回步驟321,在步驟321,通過對(duì)RETRY_C0MPARE參數(shù)評(píng)估當(dāng)前值i,關(guān)于當(dāng)前再試比較級(jí)另IJ,再次進(jìn)行確定。根據(jù)321的該評(píng)估,該處理可W進(jìn)入步驟308,在UR下進(jìn)一步再比較,或者在已經(jīng)達(dá)到RETRY_C0MPARE極限的情況下,進(jìn)入步驟351,在步驟351,WT(暫停)指出persistence_type。[0167]另外,如果在350確定基于比較的校驗(yàn)和CCRC@C==CCRC@(i-l)確實(shí)導(dǎo)致匹配,貝U該處理進(jìn)入353,在353,將該差異的持久性類型指示為持久(P)。[0168]因此,正如在步驟328和340所指出的,當(dāng)確定與CS和與CCRC的比較相同時(shí),意味著最終提交源事務(wù),而且尚未復(fù)制源事務(wù)。因此,RETRY_COMPARE_WAIT秒后直到RETRY_COMPARE極限,在UR模式下再比較該行。[0169]此外,如步驟318和338指出的,如果當(dāng)CS比較并且與計(jì)算的CCRC比較時(shí)存在差異(不匹配),則行存在差異,但是從最后時(shí)間基于不同的值,指出例如已經(jīng)再次在源更新了行,并且尚未復(fù)制到目標(biāo)。在340,在UR模式下,經(jīng)歷了復(fù)制延遲后,再次比較數(shù)據(jù)。[0170]盡管未示出,但是DIFF表中的每個(gè)差異具有DIFF_TIME時(shí)間戳,該DIFF_TIME時(shí)間戳是為了最后比較提取數(shù)據(jù)的時(shí)間。用戶能夠使DIFF_TIME與M0NIT0R_TIME相關(guān)。如果此時(shí)END2END_LATENCY過大,即,比總再試時(shí)間長(zhǎng),貝喊差異因?yàn)樵撔腥詻]有被復(fù)制。能夠再次運(yùn)行比較應(yīng)用,或者手動(dòng)選擇行,W比較它們。[0171]在一個(gè)實(shí)施例中,又一個(gè)參數(shù)REC肥CK_DIF??S=diff-schema-name.diff-table-name可W用于僅再比較在前面的DIFF輸出表中報(bào)告為差異的行。[0172]圖10示出如在此所述用于對(duì)持久性差異進(jìn)行確定的系統(tǒng)400。在一個(gè)實(shí)施例中,如果當(dāng)在復(fù)制延遲之后再檢驗(yàn)時(shí)數(shù)據(jù)仍不同并且當(dāng)?shù)谝淮伪容^數(shù)據(jù)時(shí)最初由未提交事務(wù)導(dǎo)致差異,則該差異是持久性的。在diffRepo;rte;r線程104確定persistence-type值。在第一差異卸載階段,在圖10的圖中,QueueDiff106是將差異從合并器合并線程發(fā)送到diffR邱Oder的同步隊(duì)列。合并線程98計(jì)算CCRC并且確定諸如在此參考圖9描述的持久性類型。所有識(shí)別差異的最初持久性類型是"護(hù)(懷疑)。當(dāng)合并線程錄制檢測(cè)到的差異時(shí),立即從QueueDiff106讀出"D"差異(持久性類型)105A。運(yùn)是基于行的通知。diffReporter104將差異存儲(chǔ)于本地專用隊(duì)列中,即,11136的_如6110108中。在一個(gè)實(shí)施例中,當(dāng)最大允許存儲(chǔ)空間不夠大,不能在11136的_如6110108中保持所有差異時(shí),創(chuàng)建溢出文件109。[0173]圖10的圖中的第二持久性差異識(shí)別階段在從Insed_Queue108中指出的差異的時(shí)間戳DIFF_TIME開始的RETRY_COMPARE_WA口秒之后開始。diffReporter104將每個(gè)差異105B插入同步隊(duì)列,即,如eueDifTRecheck116中。合并線程98的池消費(fèi)該隊(duì)列116。對(duì)于處理的每個(gè)差異105B,合并線程通過QueueDiff106將再檢驗(yàn)結(jié)果105C(持久性類型)送回diffReporter。[0174]當(dāng)diffRepwter線程104報(bào)告合并線程98檢測(cè)到的差異時(shí),,圖10的圖中的第Ξ持久性差異報(bào)告階段開始。difTReporter線程104保持讀出QueueDiff,并且將能夠確定其持久性類型(即,其差異類型是"U"(未知)、?'(暫停)或者"P"(持久性的))的差異插入DIFF表126中。在圖9中解釋了詳細(xì)確定方法。將具有持久性類型"D"(懷疑)的差異插入Insed_如eue108中,由合并器做進(jìn)一步比較;忽略具有類型"N"(非持久性的)的差異。對(duì)于用戶僅外部化類型"P"、叮"和"U"。為了確定實(shí)際持久性,DIFF輸出表中的類型"U"要求利用CS做附力化較,并且DIFF輸出表中的類型叩'要求使用UR的更多再比較。[0175]在一個(gè)實(shí)施例中,實(shí)用程序采用進(jìn)度監(jiān)視函數(shù)。在該實(shí)施例中,可W將J0BPR0GRESSP邸CT=YIN的參數(shù)值設(shè)定(為"否"),并且用于消除對(duì)行計(jì)數(shù)的步驟。因此,輸出消息,即,圖12中所示的典型消息150不顯示在153指出的完成百分比和在155指出的開始百分比。相反,百分比值僅由完成的行數(shù)和正在比較的/已經(jīng)比較的行數(shù)代替,用于報(bào)告(例如,"完成10000行,開始15000行")。當(dāng)其基于塊的校驗(yàn)和匹配時(shí),不活模式和活模式都能夠報(bào)告完成基于塊的比較。如果不匹配,則在一次通過基于行的比較后,不活模式能夠獲取該結(jié)果,但是活模式要求W至少一個(gè)RETRY_COMPARE_WAIT間隔多次通過基于行的比較。因此,為了使活模式下比較進(jìn)度不表現(xiàn)失效甚或使系統(tǒng)掛起,還在155報(bào)告基于塊的比較開始的行計(jì)數(shù)的百分比。比較了最初基于塊的統(tǒng)計(jì)結(jié)果/數(shù)據(jù)提取后,將基于塊的比較看作"開始"。圖12所示的典型消息150將基于塊的比較消息顯示為具有基于塊的比較開始155的百分比或者行計(jì)數(shù)。最初基于塊的統(tǒng)計(jì)結(jié)果/數(shù)據(jù)提取比較之后,將基于塊的比較看作"開始'。[0176]完成塊之后,改變特定塊比較狀況。當(dāng)并且僅當(dāng)已經(jīng)確定了所有運(yùn)些行的持久性類型時(shí),完成特定塊的比較。還可W同時(shí)比較多個(gè)塊。在跟蹤特定塊的整個(gè)比較處理的一種實(shí)現(xiàn)中,可W使用散列表。當(dāng)最初UR比較之后將具有持久性類型"D"的第一差異發(fā)送到diffR邱OTter時(shí),將該塊插入散列表中。當(dāng)確定所有運(yùn)些懷疑差異的持久性類型時(shí),從散列表中移除該塊。[0177]此外,在基于散列的塊狀況表中的塊狀況發(fā)生變化之前,插入并且提交所有關(guān)聯(lián)差異。此外,在一個(gè)實(shí)施例中,為了避免頻繁提交或者大量提交,當(dāng)一個(gè)塊完成時(shí),提交插入的差異,或者差異數(shù)是某個(gè)數(shù),例如,50的倍數(shù)。[0178]在一個(gè)實(shí)施例中,在圖10的圖中,在主線程94執(zhí)行了去除最初預(yù)處理階段中的計(jì)數(shù)行后,總體性能得到改善。然而,當(dāng)J0BPR0GRESSP邸CT=Y時(shí),仍要求源的計(jì)數(shù)行。該任務(wù)分配到diffRepoder線程104,即,在活比較的最初階段,對(duì)diffRepoder線程引入潛在瓶頸。如果計(jì)數(shù)未完成,則difTReporter104不能開始處理合并線程報(bào)告的差異。當(dāng)類型"護(hù)差異的數(shù)量大于diffQueue106的大小時(shí),阻塞合并線程98,直到diffQueue不滿或者不限制存儲(chǔ)的儲(chǔ)存器的diff如eue變得可用。在一個(gè)例子中,當(dāng)前硬編碼值是10,000。[0179]現(xiàn)在參考實(shí)施例描述關(guān)于確定利用游標(biāo)穩(wěn)定性(CS)提取數(shù)據(jù)的進(jìn)一步詳情。當(dāng)綁定存儲(chǔ)過程并且關(guān)聯(lián)通用封裝時(shí),變量UR(未提交讀出)用作數(shù)據(jù)存取的隔離級(jí)別。隔離級(jí)另IJ越高,則數(shù)據(jù)庫(例如,DB2)必須獲取的鎖越多,其中可能影響到使其他應(yīng)用變慢或者導(dǎo)致死鎖狀況。為了避免"臟"讀出導(dǎo)致的差異,通過作為S(iL語句的一部分清楚地陳述子句"WITHCS",利用隔離級(jí)別CS(游標(biāo)穩(wěn)定性)提取數(shù)據(jù)。用于數(shù)據(jù)提取的CS游標(biāo)正在利用"FORREAD0化r使用多行提取。收到負(fù)S化CODE后,比較應(yīng)用不再試查詢語句。當(dāng)錯(cuò)誤代碼指出1)當(dāng)前工作單位因?yàn)樗梨i或者暫停已經(jīng)回滾,代表應(yīng)用進(jìn)程發(fā)出ROLLBACK語句,撤銷當(dāng)前工作單位時(shí)的所有更新;或者2)死鎖或者暫停導(dǎo)致未成功執(zhí)行,未發(fā)出R0化BACK語句,但是對(duì)于死鎖,請(qǐng)求應(yīng)用進(jìn)程本身或者發(fā)出R0化BACK語句或者終止中的一個(gè)時(shí),通過提交并且然后報(bào)告具有持久性類型"U"的差異,實(shí)用程序釋放鎖。[0180]其他DBMS變量控制在暫停之前,在圖9中的328,比較應(yīng)用將等待CS讀出的特定鎖的時(shí)間量。例如,在IBMDB2z/OS上,比較在暫停之前等待鎖的最大時(shí)間長(zhǎng)度是IRLMRWTDSNZPARM值加DEADLOCKIRLMPR0C值。[0181]運(yùn)行于服務(wù)器平臺(tái),例如,IBM'sz/OS上的典型數(shù)據(jù)庫系統(tǒng)(IBMDB2)具有PREPARE子句USECURRENTLYCOMMUTED,W存取最后提交的數(shù)據(jù)版本(即,在"阻塞"工作單位已經(jīng)改變?cè)撔械巧形刺峤辉摳淖冎艾F(xiàn)有的數(shù)據(jù)版本),而不等待寫入器釋放鎖。運(yùn)樣能夠改善諸如表比較應(yīng)用的只讀應(yīng)用的性能。當(dāng)數(shù)據(jù)處于正在更新或者刪除的過程中時(shí),實(shí)用程序能夠獲得提交數(shù)據(jù)(跳過處于正在插入處理中的行)。不幸的是,由于不是DB2z/OS上的所有數(shù)據(jù)庫都支持UPDATE,因此,對(duì)于任何阻塞UPDATES,CS讀出事務(wù)必須等待COMM口或者R0化BACK操作。當(dāng)正在進(jìn)行UPDATE操作時(shí),DB2LUW支持同時(shí)對(duì)最后提交的先前版本的數(shù)據(jù)進(jìn)行存取。然而,在一個(gè)實(shí)施例中,在如下條件下:當(dāng)封裝運(yùn)行于上面的表空間不是通用表空間時(shí),USECURRENTLYC0MMITT抓僅適用于通用表空間;對(duì)于表、分區(qū)或者表空間鎖;對(duì)于使用LOCKTA化EINEX化USIVEMODE時(shí);當(dāng)鎖保持器正在執(zhí)行批量刪除時(shí);W及如果鎖保持器已經(jīng)升級(jí),使用WA口FOROUTCOME行為。[0182]在實(shí)現(xiàn)DB2數(shù)據(jù)庫的典型實(shí)施例中,利用表空間中定義的參數(shù)控制鎖定行為。不正確的參數(shù)值能夠?qū)е沦Y源頻繁不可用,并且降低并發(fā)性。L0CKSIZE、L0CKMAX和MAXR0WS是運(yùn)樣Ξ個(gè)參數(shù):L0CKSIZEPAGE參數(shù)是對(duì)性能和并發(fā)性的一種選擇。為了在不增加數(shù)據(jù)共享開銷的情況下實(shí)現(xiàn)行級(jí)鎖定,可W利用MAXR0WS1迫使每行到其自己的頁。MAXR0WS1增加了存儲(chǔ)數(shù)據(jù)要求的頁數(shù)并且消除了壓縮的所有好處。[0183]為了實(shí)現(xiàn)高可用性,沒有理由允許發(fā)生鎖升級(jí)。鎖升級(jí)的好處是,在減少保持于IRLM中的大量鎖時(shí),由DB2代表不釋放其鎖的不良設(shè)計(jì)的應(yīng)用提供保護(hù)。因此,在一個(gè)實(shí)施例中,可W設(shè)定L0CKMAX=0值,W避免鎖升級(jí)。[0184]另一個(gè)NUMLKTS子系統(tǒng)參數(shù)化0CK陽RTABLESPACE字段)規(guī)定CREATETABLESPACE和ALTERTABLESPACE語句的LOCKMAX子句的默認(rèn)值(處于子系統(tǒng)級(jí)別)dLOCKMAX的值應(yīng)當(dāng)小于NUMLKUS子系統(tǒng)參數(shù)化0CKPERUS邸字段)。超過任何一個(gè)極限都能夠?qū)е沦Y源不可用狀況。當(dāng)比較應(yīng)用導(dǎo)致資源不可用狀況時(shí),應(yīng)當(dāng)首先將CS_READ參數(shù)的值設(shè)定為"N",并且然后,調(diào)查根本原因。[0185]在典型實(shí)現(xiàn)中,合并器因此具有兩個(gè)職責(zé):1)比較每個(gè)塊并且將任何可疑差異候選對(duì)象送到diffRepoder;W及2)逐個(gè)并且逐階段再檢驗(yàn)可疑差異(由diffRepoder發(fā)送)。在活模式比較中,基于塊的最初比較可W發(fā)現(xiàn)許多基于行的可疑差異。少量連續(xù)塊中的可疑差異可W是許多,并且造成性能問題。為了解決該性能問題,如圖11的系統(tǒng)圖410所示,提供了稱為"dMergers"398僅用于再檢驗(yàn)單獨(dú)差異的專用合并器,如創(chuàng)建dMerger線程塊399所指出的。由于運(yùn)些dMergers398不比較表塊,所W運(yùn)些dMergers398不增加使用,但是相反卻改善性能。[0186]因此,作為例子,在圖11中,當(dāng)用戶輸入"1^1¥6=¥,^11'冊(cè)6405=21,另一個(gè)PARALLELCMPS=2"時(shí),比較應(yīng)用將創(chuàng)建2個(gè)合并器((2*3),每個(gè)合并器將創(chuàng)建2個(gè)工作線程,1個(gè)diffR邱Oder線程104、1個(gè)分區(qū)器線程95、1個(gè)主線程94。在該例中,假定關(guān)于線程數(shù)量的極限(例如,21個(gè)),仍可W創(chuàng)建21-9=12個(gè)線程。使用所有運(yùn)些線程,可W對(duì)用戶透明地創(chuàng)建4個(gè)W上diff-recheck-only合并線程398。[0187]在又一個(gè)示例性實(shí)施例中,參考圖13,圖13示出執(zhí)行差異檢測(cè)的詳細(xì)過程的結(jié)果。例如,用戶能夠從差異表獲得整個(gè)過程。在一個(gè)實(shí)施例中,當(dāng)且僅當(dāng)差異是對(duì)差異塊分配的具有相同鍵值的行時(shí),詳細(xì)過程和結(jié)果報(bào)告復(fù)寫差異。[0188]因此,提供圖13所示的差異檢測(cè)輸出表160,該差異檢測(cè)輸出表160具有:數(shù)據(jù)字段列:例如,指出塊數(shù)(在Block_Num列字段166中指出)的數(shù)據(jù)字段列163;W及用于識(shí)別相關(guān)行(例如,該表具有一列鍵ID字段167)的鍵列;相關(guān)行的并且具有Ξ種類型中的一種的相應(yīng)差異類型(Diff_Type):U(更新)、D(刪除)和1(插入);W及指出塊的持久性狀態(tài)(DIFF_IS_陽RSISTENT)值的列165,例如,P(持久性的)、U(未知的)、Τ(暫停的)和D(懷疑的)或者非持久性的(N);字段162值的計(jì)算的CCRC值及其相應(yīng)時(shí)間戳值161。如圖13的典型輸出160所示,第一次比較后,全部頭5行是候選對(duì)象差異。塊ID是鍵列。特別是,一行168不指出檢測(cè)到的差異,并且不是差異,而是從合并器到diffR邱oパer的塊1完成的信號(hào)。鍵值將是N化L。此夕h在典型輸出160中,利用指示為(提交)的持久性字段值,行169示出提交讀出之后,例如,第Ξ次比較之后的差異。利用指示為"P"的持久性字段值,該輸出的最后5行170示出持久性的差異。[0189]當(dāng)不必需詳細(xì)差異檢測(cè)時(shí),比較應(yīng)用不報(bào)告差異檢測(cè)過程。相反,僅報(bào)告每個(gè)差異的最終結(jié)果。運(yùn)意味著,僅報(bào)告持久性類型P(持久性的)、U(未知的)和T(暫停的)的差異,并且將該差異插入輸出DIFF表。[0190]在又一個(gè)實(shí)施例中,完成了所有比較后,可W配置diffItepOTter線程,W報(bào)告差異檢測(cè)中的統(tǒng)計(jì)結(jié)果,如圖14所示,該統(tǒng)計(jì)結(jié)果提供總值175,該總值175包含:從源表提取的總行數(shù);差異總數(shù)飽含全部DIFF_IS_PERSISTENT值T、U、P);復(fù)寫差異的總數(shù);具有DIFF_TYPE=U(具有不同非鍵列)的差異的總數(shù);具有DIFF_TYPE=I(插入)類型(只有源)的總行數(shù);具有DIFF_TYPE=D(刪除)類型(只有目標(biāo))的總行數(shù);CS讀出的總數(shù);其DIFF_PERSISTENCE是值T(暫停)的總行數(shù);再比較之后其差異不是持久性差異的總行數(shù);其差異DIFF_P邸SISTENCE是值P(持久性的)的總行數(shù);其差異DIFF_P邸SISTENCE是值U(未知的)的總行數(shù);W及再比較的總數(shù)(其值不計(jì)算最初比較)。[0191]圖3示出計(jì)算系統(tǒng)500的示例性硬件配置的一個(gè)實(shí)施例,對(duì)該計(jì)算系統(tǒng)500編程,W執(zhí)行圖4A-7和9所示的實(shí)現(xiàn)輕量表比較的方法步驟和在此參考圖4A-4B、5-7和9描述的持久性差異識(shí)別。硬件配置優(yōu)選地具有至少一個(gè)處理器或者中央處理單元(CPU)51UCPU511通過系統(tǒng)總線512與:隨機(jī)存取存儲(chǔ)器(RAM)514、只讀存儲(chǔ)器(R0M)516、輸入/輸出(I/O)適配器518(用于將諸如磁盤單元521和磁帶驅(qū)動(dòng)器540的外圍設(shè)備連接到總線512)、用戶接口適配器522(用于將鍵盤524、鼠標(biāo)526、揚(yáng)聲器528、麥克風(fēng)532和/或者其他用戶接口設(shè)備連接到總線512)、用于將系統(tǒng)500連接到數(shù)據(jù)處理網(wǎng)絡(luò)、因特網(wǎng)、內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(LAN)等等的通信適配器534、W及用于將總線512連接到顯示設(shè)備538和/或者打印機(jī)539(例如,數(shù)字打印機(jī)等等)的顯示器適配器536互連。[0192]本發(fā)明可W是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可W包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。[0193]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可W是可W保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可W是一-但不限于一一電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器化PROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、W及上述的任意合適的組合。運(yùn)里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。[0194]運(yùn)里所描述的計(jì)算機(jī)可讀程序指令可W從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可W包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,W供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。[01%]用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可W是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者W-種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如Smalltalk、C++等,W及常規(guī)的過程式編程語言一諸如"C"語言或類似的編程語言。計(jì)算機(jī)可讀程序指令可W完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在設(shè)及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可W通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可W連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程口陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可W執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。[0196]運(yùn)里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框W及流程圖和/或框圖中各方框的組合,都可W由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。[0197]運(yùn)些計(jì)算機(jī)可讀程序指令可W提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得運(yùn)些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可W把運(yùn)些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,運(yùn)些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備W特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。[0198]也可W把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,W產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。[0199]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在運(yùn)點(diǎn)上,流程圖或框圖中的每個(gè)方框可W代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可W基本并行地執(zhí)行,它們有時(shí)也可W按相反的順序執(zhí)行,運(yùn)依所設(shè)及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、W及框圖和/或流程圖中的方框的組合,可W用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可W用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)?!局鳈?quán)項(xiàng)】1.一種表數(shù)據(jù)比較的方法,包括:識(shí)別包括源數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的塊和包括第二數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的相應(yīng)塊;獲得與包含在所述源表的識(shí)別塊中的數(shù)據(jù)關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果值,并且獲得包含在目標(biāo)表塊的所述相應(yīng)塊中的數(shù)據(jù)的又一個(gè)統(tǒng)計(jì)結(jié)果值;比較統(tǒng)計(jì)結(jié)果值,以確定匹配結(jié)果;以及基于所述比較的結(jié)果,確定每個(gè)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表的塊是否一致,其中編程處理器設(shè)備執(zhí)行所述識(shí)別、獲得、比較以及確定操作。2.根據(jù)權(quán)利要求1所述的方法,還包括:在確定了不匹配比較結(jié)果時(shí),提取每個(gè)所述識(shí)別的且相應(yīng)的塊,并且還對(duì)所述識(shí)別塊和相應(yīng)塊中的行的逐行比較累計(jì)數(shù)據(jù)進(jìn)行比較,以進(jìn)行一致性確定;或者在確定匹配比較結(jié)果時(shí),避免為了對(duì)所述識(shí)別的且相應(yīng)的塊執(zhí)行逐行比較從所述塊所述提取所述數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的方法,其中所述源數(shù)據(jù)庫表和所述目標(biāo)數(shù)據(jù)庫表包括多個(gè)塊,并且在確定匹配比較結(jié)果時(shí),從所述源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表識(shí)別又一個(gè)塊,并且對(duì)所述又一個(gè)塊重復(fù)所述獲得、比較和一致性確定,以及對(duì)多個(gè)塊重復(fù)所述識(shí)別、獲得、比較和一致性確定。4.根據(jù)權(quán)利要求3所述的方法,其中所述識(shí)別塊包括識(shí)別物化查詢表圖,所述物化查詢表圖定義形成在先應(yīng)用用戶數(shù)據(jù)庫查詢操作的結(jié)果的行的子集。5.根據(jù)權(quán)利要求3所述的方法,其中所述識(shí)別塊包括識(shí)別通過抽樣操作選擇的所述源數(shù)據(jù)庫表的行。6.根據(jù)權(quán)利要求5所述的方法,其中所述抽樣操作采用隨機(jī)選擇函數(shù)。7.根據(jù)權(quán)利要求3所述的方法,其中所述獲得統(tǒng)計(jì)結(jié)果值包括如下中的一個(gè)或者多個(gè):采用處理收集統(tǒng)計(jì)結(jié)果,統(tǒng)計(jì)結(jié)果包括:所述塊或者表的行計(jì)數(shù)(基數(shù))值、所述塊或者表的列計(jì)數(shù)值、所述塊或者表的平均行長(zhǎng)度值、統(tǒng)計(jì)結(jié)果的基數(shù)和直方圖、鍵基數(shù)值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定累計(jì)值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定平均值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定標(biāo)準(zhǔn)偏差值;以及采用用戶定義函數(shù)處理所述塊中的所述數(shù)據(jù),以計(jì)算統(tǒng)計(jì)結(jié)果值。8.根據(jù)權(quán)利要求3所述的方法,在所述目標(biāo)數(shù)據(jù)庫表包含由所述源表復(fù)制的數(shù)據(jù)的數(shù)據(jù)庫環(huán)境下運(yùn)行,所述方法還包括:在第一時(shí)間點(diǎn),確定所述源表中的所述識(shí)別塊的行與所述目標(biāo)表中的所述相應(yīng)塊的所述行之間的第一組差異;在所述第一時(shí)間點(diǎn)后至少復(fù)制等待時(shí)間間隔之后的第二時(shí)間點(diǎn),確定所述源表中的所述塊的行與目標(biāo)表中的所述塊的所述行之間的第二組差異,基于不同時(shí)間點(diǎn)的所述第一組差異和第二組差異,將所述源表的所述識(shí)別塊與所述目標(biāo)表的相應(yīng)塊之間的差異確定為是持久性類型、非持久性類型、暫停類型或者未知類型中的一個(gè)。9.根據(jù)權(quán)利要求8所述的方法,還包括:確定進(jìn)入操作的未提交讀出(UR)隔離級(jí)別模式,使得查詢數(shù)據(jù)避免與一個(gè)或者多個(gè)用戶應(yīng)用爭(zhēng)用鎖,以及如果確定進(jìn)入所述UR模式,并且當(dāng)前時(shí)間在復(fù)制等待時(shí)間間隔之后,則再比較所述源表和目標(biāo)表的相應(yīng)塊中的相應(yīng)行的數(shù)據(jù)的所述累計(jì)數(shù)據(jù)值,并且如果確定所述行的所述再比較的累計(jì)數(shù)據(jù)值匹配,則所述差異類型不是持久性的,否則,如果確定所述再比較累計(jì)數(shù)據(jù)值差異為不匹配,則比較當(dāng)前確定差異結(jié)果和從在先等待時(shí)間間隔發(fā)生的所述行的差異確定結(jié)果,并且如果確定所述當(dāng)前差異結(jié)果與在先差異結(jié)果之間的所述比較差異匹配,則確定是否在使共享鎖布置于提取行上并且使另一個(gè)處理將共享鎖布置于同一個(gè)行上的操作的游標(biāo)穩(wěn)定性(CS)隔離級(jí)別模式下評(píng)估了所述行的所述差異結(jié)果,并且如果未在操作的所述CS級(jí)別模式下操作,則確定所述差異類型是未知的;并且如果確定所述當(dāng)前差異結(jié)果與在先差異結(jié)果之間的所述比較差異匹配,則確定所述差異類型是持久性的。10.根據(jù)權(quán)利要求9所述的方法,其中如果確定所述行的所述比較的當(dāng)前確定差異結(jié)果和所述在先差異確定結(jié)果不匹配,則:在所述UR模式下,將對(duì)所述源表和目標(biāo)表中的塊的相應(yīng)行重復(fù)所述再比較所述累計(jì)數(shù)據(jù)值規(guī)定的迭代次數(shù),直到檢測(cè)到匹配狀況;并且如果在同一個(gè)迭代中未檢測(cè)到匹配狀況,則:對(duì)所述行重復(fù)所述比較所述當(dāng)前確定差異結(jié)果和所述在先差異確定結(jié)果;以及如果在達(dá)到所述迭代次數(shù)之后,保持所述不匹配狀況差異結(jié)果,則確定所述持久性類型是暫停的。11.一種用于表數(shù)據(jù)比較的系統(tǒng),包括:存儲(chǔ)器,配置所述存儲(chǔ)器,以存儲(chǔ)從源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表收到的數(shù)據(jù);處理器,所述處理器與所述存儲(chǔ)器通信,配置所述處理器以執(zhí)行方法,從而:識(shí)別包括源數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的塊和包括第二數(shù)據(jù)庫表的數(shù)據(jù)的行的子集的相應(yīng)塊;獲得與包含在所述源表的識(shí)別塊中的數(shù)據(jù)關(guān)聯(lián)的統(tǒng)計(jì)結(jié)果值,并且獲得包含在目標(biāo)表塊的所述相應(yīng)塊中的數(shù)據(jù)的又一個(gè)統(tǒng)計(jì)結(jié)果值;比較統(tǒng)計(jì)結(jié)果值,以確定匹配結(jié)果;以及基于所述比較的結(jié)果,確定每個(gè)源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表的所述塊是否一致。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中在確定了不匹配比較結(jié)果時(shí),配置所述處理器設(shè)備,以提取每個(gè)所述識(shí)別的且相應(yīng)的塊,并且還對(duì)所述識(shí)別塊和相應(yīng)塊中的行的逐行比較累計(jì)數(shù)據(jù)進(jìn)行比較,以進(jìn)行一致性確定;或者在確定匹配比較結(jié)果時(shí),避免為了對(duì)所述識(shí)別的且相應(yīng)的塊執(zhí)行逐行比較,從所述塊所述提取所述數(shù)據(jù)。13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述源數(shù)據(jù)庫表和所述目標(biāo)數(shù)據(jù)庫表包括多個(gè)塊,并且在確定匹配比較結(jié)果時(shí),進(jìn)一步配置所述處理器設(shè)備,以從所述源數(shù)據(jù)庫表和目標(biāo)數(shù)據(jù)庫表識(shí)別又一個(gè)塊,并且對(duì)所述又一個(gè)塊重復(fù)所述獲得、比較和一致性確定,以及對(duì)多個(gè)塊重復(fù)所述識(shí)別、獲得、比較和一致性確定。14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中塊包括物化查詢表圖,所述物化查詢表圖定義形成在先應(yīng)用用戶數(shù)據(jù)庫查詢操作的結(jié)果的行的子集。15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中進(jìn)一步配置所述處理器設(shè)備,以:執(zhí)行抽樣操作,從而識(shí)別所述塊的行。16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述抽樣操作采用隨機(jī)選擇函數(shù)。17.根據(jù)權(quán)利要求13所述的系統(tǒng),其中為了獲得統(tǒng)計(jì)結(jié)果值,進(jìn)一步配置所述處理器設(shè)備,以執(zhí)行如下中的一個(gè)或者多個(gè):采用處理收集統(tǒng)計(jì)結(jié)果,統(tǒng)計(jì)結(jié)果包括:所述塊或者表的行計(jì)數(shù)(基數(shù))值、所述塊或者表的列計(jì)數(shù)值、所述塊或者表的平均行長(zhǎng)度值、統(tǒng)計(jì)結(jié)果的基數(shù)和直方圖、鍵基數(shù)值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定累計(jì)值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定平均值、對(duì)所述塊或者表的一個(gè)或者多個(gè)列產(chǎn)生的規(guī)定標(biāo)準(zhǔn)偏差值;以及采用用戶定義函數(shù)處理所述塊中的所述數(shù)據(jù),以計(jì)算統(tǒng)計(jì)結(jié)果值。18.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述目標(biāo)數(shù)據(jù)庫表包含由所述源表復(fù)制的數(shù)據(jù),進(jìn)一步配置所述處理器設(shè)備,以:在第一時(shí)間點(diǎn),確定所述源表中的所述識(shí)別塊的行與所述目標(biāo)表中的所述相應(yīng)塊的所述行之間的第一組差異;在所述第一時(shí)間點(diǎn)后至少復(fù)制等待時(shí)間間隔之后的第二時(shí)間點(diǎn),確定所述源表中的所述塊的行與目標(biāo)表中的所述塊的所述行之間的第二組差異,基于不同時(shí)間點(diǎn)的所述第一組差異和第二組差異,將所述源表的所述識(shí)別塊與所述目標(biāo)表的相應(yīng)塊之間的差異確定為是持久性類型、非持久性類型、暫停類型或者未知類型中的一個(gè)。19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中進(jìn)一步配置所述處理器設(shè)備,以:確定進(jìn)入操作的未提交讀出(UR)隔離級(jí)別模式,使得查詢數(shù)據(jù)避免與一個(gè)或者多個(gè)用戶應(yīng)用爭(zhēng)用鎖,以及如果進(jìn)入所述UR模式,并且當(dāng)前時(shí)間在復(fù)制等待時(shí)間間隔之后,則再比較所述源表和目標(biāo)表的相應(yīng)塊中的相應(yīng)行的數(shù)據(jù)的所述累計(jì)數(shù)據(jù)值,并且如果確定所述行的所述再比較累計(jì)數(shù)據(jù)值匹配,則所述差異類型不是持久性的,否則,如果確定所述再比較累計(jì)數(shù)據(jù)值差異為不匹配,則比較當(dāng)前確定差異結(jié)果和從在先等待時(shí)間間隔發(fā)生的所述行的差異確定結(jié)果,并且如果確定所述當(dāng)前差異結(jié)果與在先差異結(jié)果之間的所述比較差異匹配,則確定是否在使共享鎖布置于提取行上并且使另一個(gè)處理將共享鎖布置于同一個(gè)行上的操作的游標(biāo)穩(wěn)定性(CS)隔離級(jí)別模式下評(píng)估了所述行的所述差異結(jié)果,并且如果未在操作的所述CS級(jí)別模式下操作,則確定所述差異類型是未知的;并且如果確定所述當(dāng)前差異結(jié)果與在先差異結(jié)果之間的所述比較差異匹配,則確定所述差異類型是持久性的。20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中如果確定所述行的所述比較的當(dāng)前確定差異結(jié)果和所述在先差異確定結(jié)果不匹配,則進(jìn)一步配置所述處理器設(shè)備,以:在所述UR模式下,將對(duì)所述源表和目標(biāo)表中的塊的相應(yīng)行重復(fù)所述再比較所述累計(jì)數(shù)據(jù)值規(guī)定的迭代次數(shù),直到檢測(cè)到匹配狀況;并且如果在同一個(gè)迭代中未檢測(cè)到匹配狀況,對(duì)所述行重復(fù)所述比較所述當(dāng)前確定差異結(jié)果和所述在先差異確定結(jié)果;以及如果在達(dá)到所述迭代次數(shù)之后,保持所述不匹配狀況差異結(jié)果,則確定所述持久性類型是暫停的。則:【文檔編號(hào)】G06F17/30GK105989194SQ201610160512【公開日】2016年10月5日【申請(qǐng)日】2016年3月21日【發(fā)明人】S.布爾諾奈斯,Y.O.勞,李瀟,閔紅,J.威倫加,周祥為【申請(qǐng)人】國(guó)際商業(yè)機(jī)器公司