專利名稱::用于處理包括半連接的查詢的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明的實(shí)施例涉及利用運(yùn)行時(shí)間優(yōu)化的動(dòng)態(tài)半連接(semi-join)處理。
背景技術(shù):
:關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)軟件使用關(guān)系技術(shù)來存儲和檢取在關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。關(guān)系數(shù)據(jù)庫是計(jì)算機(jī)化的信息存儲和檢取系統(tǒng)。關(guān)系數(shù)據(jù)庫被組織成由多行和多列數(shù)據(jù)組成的表??梢詫⑿蟹Q為元組或者記錄或者行。數(shù)據(jù)庫通常具有多個(gè)表,每個(gè)表通常都具有多條記錄和多個(gè)列。RDBMS可以使用結(jié)構(gòu)化的查詢語言(SQL)接口??梢允褂盟饕齺碓L問數(shù)據(jù)庫中的表。索引是針對表中的記錄的引用(reference)(例如指針)的有序集合。通過使用關(guān)鍵字(即表中每個(gè)記錄的字段或者屬性其中之一,其對應(yīng)于一個(gè)列),利用索引來訪問表中的各條記錄。還可以將術(shù)語“關(guān)鍵字”稱為“索引關(guān)鍵字”。沒有索引,查找一條記錄就需要掃描(線性地)整個(gè)表。索引提供了一種訪問表中數(shù)據(jù)的另選技術(shù)。用戶可以在建立表之后針對表創(chuàng)建索引。索引基于該表的一列或者多列??梢詫⒉樵兠枋鰹橐环N基于特定條件對來自數(shù)據(jù)庫的信息的請求。查詢通常包括一個(gè)或者多個(gè)判斷式(predicate)。可以將一個(gè)判斷式描述為搜索條件的一個(gè)元素,其表達(dá)或者暗示了一比較運(yùn)算(例如,A=3)。當(dāng)RDBMS接收到一個(gè)查詢時(shí),該查詢指定了用戶想要的數(shù)據(jù),但沒有給出如何獲取該數(shù)據(jù)。當(dāng)接收到所述查詢時(shí),在準(zhǔn)備階段,RDBMS將所述查詢轉(zhuǎn)換為可執(zhí)行的格式。在綁定(bind)階段,RDBMS確定針對查詢所要檢取的數(shù)據(jù)而言的訪問路徑,這些路徑說明了應(yīng)當(dāng)如何來檢取數(shù)據(jù)。然后,RDBMS執(zhí)行所述查詢。取與(ANDing)是指組合記錄標(biāo)識符(RID)的AND運(yùn)算??梢詫蓚€(gè)操作數(shù)之間的AND運(yùn)算描述為布爾運(yùn)算,當(dāng)且僅當(dāng)每個(gè)操作數(shù)具有布爾值1的時(shí)候,其結(jié)果才為布爾值1。索引取與是如下一種處理查詢的技術(shù),即通過將存儲在索引中的記錄標(biāo)識符(RID)的結(jié)果集合的檢取分為若干個(gè)操作(這可以稱為半連接),并且將這些結(jié)果集合用AND運(yùn)算相組合。類似地,取或(ORing)是指組合RID的OR運(yùn)算。可以將在兩個(gè)操作數(shù)之間的OR運(yùn)算描述為布爾運(yùn)算,如果任一個(gè)操作數(shù)具有布爾值1,則其結(jié)果為布爾值1。索引取或是如下一種處理查詢的技術(shù),即通過將存儲在索引中的記錄標(biāo)識符(RID)的結(jié)果集合的檢取分為若干個(gè)操作(這可以稱為半連接),并且將這些結(jié)果集合用OR運(yùn)算相組合??梢詫⑦B接(join)描述為SQL關(guān)系運(yùn)算,其允許基于列值的匹配從兩個(gè)或者更多個(gè)表中檢取數(shù)據(jù)??梢詫脒B接描述為部分連接,其中從外部表或者索引對內(nèi)部表的索引進(jìn)行訪問。對內(nèi)部表的訪問本身被延遲。星型連接(starjoin)是一種用于處理形成星型模式數(shù)據(jù)模型的表的連接類型。星型模式數(shù)據(jù)模型包括由多個(gè)維度表(dimensiontable)圍繞的一個(gè)中央事實(shí)表(centralfacttable),與中央表相連接的每個(gè)維度表都代表一個(gè)星型圖案。在一個(gè)示例中,半連接的外部表是一個(gè)維度表,而內(nèi)部表是所述事實(shí)表。在該示例中,可以有多個(gè)維度,每一個(gè)都半連接以劃分(separate)內(nèi)部事實(shí)表的索引。每個(gè)半連接都訪問一個(gè)索引,以便從這些維度中檢取與一個(gè)或者多個(gè)連接判斷式匹配的RID。半連接的結(jié)果是與所述一個(gè)或者多個(gè)連接判斷式匹配的所有事實(shí)表RID的列表。然后,對從所有半連接得到的RID進(jìn)行取與運(yùn)算(相交(intersect)),以產(chǎn)生最終的RID列表。然后,使用最終的RID列表來從事實(shí)表中檢取行。利用傳統(tǒng)的索引取與實(shí)施方案,在準(zhǔn)備或者綁定階段期間確定對半連接結(jié)果進(jìn)行取與的順序,并且該順序在執(zhí)行時(shí)保持固定。可能該順序不是最優(yōu)的,或者,一個(gè)或多個(gè)半連接提供差的可選性。例如,下面的查詢(1)是具有三個(gè)維度表D1、D2、D3和一個(gè)事實(shí)表F的星型查詢。當(dāng)維度表D1中的列C1的值等于事實(shí)表中的列C1的值、當(dāng)維度表D2中的列C2的值等于事實(shí)表中的列C2的值、以及當(dāng)維度表D3中的列C3的值等于事實(shí)表中的列C3的值時(shí),查詢(1)從事實(shí)表F中的一行的列C1中選擇一個(gè)值。因此,對于查詢(1)來說,如在WHERE子句(clause)中所指定的,每個(gè)維度表都與事實(shí)表相連接。查詢(1)SELECTF.C1FROMD1,D2,D3,F(xiàn)WHERED1.C1=F.C1ANDD2.C2=F.C2ANDD3.C3=F.C3;RDBMS的查詢優(yōu)化器可以確定下面的在準(zhǔn)備或綁定階段期間的半連接取與運(yùn)算順序,而且該運(yùn)算順序在執(zhí)行時(shí)依次地執(zhí)行。圖1例示了表示該示例的半連接取與順序(1)的結(jié)構(gòu)100。順序(1)1)R1=D1->F(結(jié)果R1是對維度表D1與事實(shí)表F進(jìn)行半連接的結(jié)果)2)R2=D2->F(結(jié)果R2是對維度表D2與事實(shí)表F進(jìn)行半連接的結(jié)果)3)R3=R1ANDR2(結(jié)果R3是結(jié)果R1和結(jié)果R2的取與運(yùn)算的結(jié)果)4)R4=D3->F(結(jié)果R4是對維度表D3與事實(shí)表F進(jìn)行半連接的結(jié)果)5)R5=R3ANDR4(結(jié)果R5是結(jié)果R3和結(jié)果R4的取與運(yùn)算的結(jié)果)在執(zhí)行時(shí),由于其差的可選性,所以結(jié)果R1可能產(chǎn)生一個(gè)非常大的結(jié)果集合。因此,首先處理維度表D3與事實(shí)表F的半連接、其次處理維度表D2與事實(shí)表F的半連接將會(huì)提供更好的性能(由于在該示例中,與對結(jié)果R1和結(jié)果R2進(jìn)行取與運(yùn)算的RID列表相比,對結(jié)果R2和結(jié)果R4進(jìn)行取與運(yùn)算會(huì)帶來更小的中間RID列表)。此外,在獲得機(jī)會(huì)來完成對結(jié)果R2和結(jié)果R4的計(jì)算之前,可能結(jié)果R1的計(jì)算用盡了用于存儲RID的存儲器。因此,本領(lǐng)域中需要一種技術(shù),來改善具有半連接的查詢的處理。
發(fā)明內(nèi)容本發(fā)明提供了一種用于處理包括多個(gè)半連接的查詢的方法、計(jì)算機(jī)程序產(chǎn)品和系統(tǒng)。在執(zhí)行時(shí),從在當(dāng)前半連接執(zhí)行周期中執(zhí)行的多個(gè)半連接中選擇下一個(gè)半連接。確定一個(gè)報(bào)告閾值,該閾值表明了針對所確定的半連接而檢取到的記錄標(biāo)識符的數(shù)量。執(zhí)行所選擇的半連接,直到檢取到所確定數(shù)目個(gè)記錄標(biāo)識符為止?,F(xiàn)在參照附圖進(jìn)行描述,其中在整個(gè)附圖中相似的附圖標(biāo)記表示相應(yīng)的部分。圖1例示了表示該示例的半連接取與順序的結(jié)構(gòu)100。圖2例示了根據(jù)某些實(shí)施例的計(jì)算設(shè)備的細(xì)節(jié)。圖3例示了根據(jù)某些實(shí)施例執(zhí)行的邏輯。圖4例示了根據(jù)某些另選實(shí)施例執(zhí)行的邏輯。圖5例示了根據(jù)某些實(shí)施例的數(shù)據(jù)存儲管理器的細(xì)節(jié)。圖6例示了根據(jù)某些實(shí)施例的可以使用的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)。具體實(shí)施例方式在下面的描述中,參照附圖,其中附圖構(gòu)成了本發(fā)明的一部分并且例示了本發(fā)明的若干個(gè)實(shí)施例。應(yīng)當(dāng)理解還可以利用其他的實(shí)施例,并且在不脫離本發(fā)明范圍的情況下可以進(jìn)行結(jié)構(gòu)和操作上的改變。當(dāng)使用索引來檢取數(shù)據(jù)(例如RID)時(shí),實(shí)施例改進(jìn)了半連接取與和取或的性能。實(shí)施例取消了預(yù)先確定的固定的取與或者取或的順序,并且引入了具有運(yùn)行時(shí)間優(yōu)化的動(dòng)態(tài)取與或者取或。利用某些實(shí)施例,以動(dòng)態(tài)的方式執(zhí)行半連接,其中在檢取到給定數(shù)量的RID之前一直處理各個(gè)半連接,并且相應(yīng)的半連接一被完成,就對最多的被選擇的半連接取與或取或。同樣,動(dòng)態(tài)地確定要為各個(gè)半連接檢取的RID的數(shù)量以及半連接的執(zhí)行順序。實(shí)施例提供對差可選性的半連接的早期終止,因此,如果累積的可選性足夠好以致于對剩余的半連接取與或者取或不會(huì)提供更好的可選性,則初期就終止所有取與或者取或操作。換句話說,當(dāng)存在足夠少量的RID集合,以致于最好終止所有的取與或者取或并且開始使用該RID集合從事實(shí)表中讀取(fetching)行時(shí),進(jìn)行該終止。此外,實(shí)施例終止或者臨時(shí)暫停特定的半連接,所述特定的半連接并不具有充分的可選性來滿足取與或者取或的準(zhǔn)備成本。此外,實(shí)施例暫停差可選性的半連接的處理,以使得其他半連接能夠完全地執(zhí)行。還可以將每個(gè)半連接稱為“支路(leg)”。盡管示例可以描述用于星型連接的成對(pair-wise)取與,但實(shí)施例還可以用于任何索引的取或或者取與(例如,在針對單個(gè)表的多個(gè)索引訪問中,IN列表處理(其中IN為判斷式類型(例如,WHEREC1IN(1,2,3)ORC2NOTIN(‘A’,‘B’,‘C’))等)、子查詢(subquery)、和涉及多個(gè)表或者嵌套查詢的連接。圖2例示了根據(jù)某些實(shí)施例的計(jì)算設(shè)備的細(xì)節(jié)??蛻粲?jì)算機(jī)200經(jīng)由網(wǎng)絡(luò)290與服務(wù)器計(jì)算機(jī)220相連??蛻粲?jì)算機(jī)200包括系統(tǒng)存儲器204,其可以以易失性和/或非易失性設(shè)備來實(shí)現(xiàn)。一個(gè)或者多個(gè)客戶應(yīng)用210(即計(jì)算機(jī)程序)存儲在系統(tǒng)存儲器204中,以便由處理器(例如中央處理單元(CPU))(未示出)來執(zhí)行。服務(wù)器計(jì)算機(jī)220包括系統(tǒng)存儲器222,其可以以易失性和/或非易失性設(shè)備來實(shí)現(xiàn)。系統(tǒng)存儲器222存儲有數(shù)據(jù)存儲管理器230(例如,關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS))和一個(gè)或者多個(gè)服務(wù)器應(yīng)用250。數(shù)據(jù)存儲管理器230包括運(yùn)行時(shí)間執(zhí)行處理器232、運(yùn)行時(shí)間優(yōu)化器236、查詢優(yōu)化器238、索引管理器240、讀取元件242、分類元件244和一個(gè)或者多個(gè)其他元件246。運(yùn)行時(shí)間執(zhí)行處理器232包括成對連接運(yùn)行時(shí)間處理器234。運(yùn)行時(shí)間執(zhí)行處理器232和運(yùn)行時(shí)間優(yōu)化器236使得能夠利用運(yùn)行時(shí)間的優(yōu)化動(dòng)態(tài)地進(jìn)行半連接取與和取或。存儲在系統(tǒng)存儲器222中的這些計(jì)算機(jī)程序通過處理器(例如中央處理單元(CPU))(未示出)來執(zhí)行。服務(wù)器計(jì)算機(jī)220向客戶計(jì)算機(jī)200提供對于數(shù)據(jù)存儲器270中的數(shù)據(jù)的訪問。數(shù)據(jù)存儲管理器230中的元件支持查詢語言(例如SQL)的功能,諸如定義、訪問控制、解釋、編譯、數(shù)據(jù)檢取,以及用戶和系統(tǒng)數(shù)據(jù)的更新。在另選實(shí)施方式中,計(jì)算機(jī)程序可以硬件、軟件,或者硬件和軟件的組合來實(shí)現(xiàn)。客戶計(jì)算機(jī)200和服務(wù)器計(jì)算機(jī)220可以包括現(xiàn)有技術(shù)中公知的任何計(jì)算設(shè)備,諸如服務(wù)器、主機(jī)、工作站、個(gè)人計(jì)算機(jī)、手持計(jì)算機(jī)、膝上型電話設(shè)備、網(wǎng)絡(luò)設(shè)備等等。網(wǎng)絡(luò)290可以包括任何類型的網(wǎng)絡(luò),例如存儲區(qū)域網(wǎng)(SAN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)、內(nèi)部網(wǎng)等。數(shù)據(jù)存儲器270可以包括存儲設(shè)備陣列,如直接訪問存儲設(shè)備(DASD)、簡單磁盤捆綁(JustaBunchofDisks,JBOD)、獨(dú)立磁盤冗余陣列(RAID),虛擬設(shè)備等。圖3例示了根據(jù)某些實(shí)施例執(zhí)行的邏輯。在塊300中,以運(yùn)行時(shí)間執(zhí)行處理器(REP)232確定是否所有的半連接都已完全執(zhí)行或者終止來開始控制。如果所有的半連接都已完成或者終止,則處理繼續(xù)至塊302,否則處理繼續(xù)至塊304。在塊302中,運(yùn)行時(shí)間執(zhí)行處理器233執(zhí)行其他的處理。在塊304中,在執(zhí)行時(shí),運(yùn)行時(shí)間執(zhí)行處理器233針對當(dāng)前半連接執(zhí)行周期來確定用于各個(gè)半連接的RID的數(shù)目,并且可以將該數(shù)目稱為報(bào)告閾值。可以將在當(dāng)前半連接的處理停止時(shí)的RID的數(shù)目稱為報(bào)告閾值。在某些實(shí)施例中,選擇報(bào)告閾值來防止在半連接任務(wù)之間的頻繁變換(即報(bào)告閾值并非太小),和/或防止較差可選擇的半連接運(yùn)行較長時(shí)間(即報(bào)告閾值并非太高)??梢詫⑤^差可選性的半連接描述為如下一種半連接其檢取整個(gè)事實(shí)表RID的非常高的百分比(即,對多個(gè)RID進(jìn)行評價(jià)以獲得RID的報(bào)告閾值數(shù))。例如,如果半連接檢取到事實(shí)(內(nèi)部)表的行的百分之百,則可以將該半連接描述為不可選。如果半連接檢取事實(shí)(內(nèi)部)表的行的百分之一,則可以將該半連接描述為非??蛇x。各種技術(shù)都可以用于選擇報(bào)告閾值。用于選擇報(bào)告閾值的一種技術(shù)是基于RID存儲池尺寸的一部分和半連接的數(shù)目來選取一個(gè)數(shù)目(例如(75%的RID池尺寸)/(半連接數(shù)目)*(一個(gè)RID的尺寸))。用于選擇報(bào)告閾值的另一種技術(shù)是使用查詢優(yōu)化器238來確定數(shù)目(例如,通過使用包含事實(shí)表基數(shù)、維度表基數(shù)等的公式,其中可以將基數(shù)描述為表中行的數(shù)目)。用于選擇報(bào)告閾值的又一種技術(shù)是允許系統(tǒng)管理員或者其他用戶來選取一個(gè)數(shù)目(例如,1000個(gè)RID)。在某些實(shí)施例中,一旦選擇了報(bào)告閾值,則該報(bào)告閾值就用于每個(gè)半連接處理周期。在某些另選實(shí)施例中,對于各個(gè)半連接而言報(bào)告閾值可能不同,而且對于各個(gè)半連接而言,該報(bào)告閾值可能會(huì)在該半連接的多個(gè)順序執(zhí)行之間變化(例如,針對第一個(gè)周期可以將用于第一半連接的報(bào)告閾值設(shè)置為1000個(gè)RID,針對第二個(gè)周期可以將其設(shè)置為5000個(gè)RID,針對第三個(gè)周期可以將其設(shè)置為500個(gè)RID等等)。在塊306,在執(zhí)行時(shí),運(yùn)行時(shí)間執(zhí)行處理器233確定一個(gè)或者多個(gè)半連接的順序,這些半連接先前沒有對于當(dāng)前半連接執(zhí)行周期而被終止或者暫停。運(yùn)行時(shí)間執(zhí)行處理器233可以基于可能涉及根據(jù)半連接執(zhí)行而產(chǎn)生的統(tǒng)計(jì)數(shù)據(jù)的啟發(fā)式規(guī)則(heuristicrule)來確定排序。例如,在準(zhǔn)備和/或綁定時(shí),優(yōu)化器238可以確定針對每個(gè)連接判斷式值所讀取的期望RID的數(shù)目,或者針對給定半連接所讀取的整個(gè)事實(shí)表RID的數(shù)目。然后,運(yùn)行時(shí)間執(zhí)行處理器232可以審查(review)來自各個(gè)半連接執(zhí)行的統(tǒng)計(jì)報(bào)告,以查看哪一個(gè)最接近滿足查詢優(yōu)化器238的期望,并且選擇接下來要處理的半連接。在塊308,成對連接運(yùn)行時(shí)間處理器234根據(jù)運(yùn)行時(shí)間執(zhí)行處理器233所確定的順序執(zhí)行所述一個(gè)或者多個(gè)半連接,直到對于各個(gè)被執(zhí)行的半連接讀取了確定數(shù)目的RID。因此,成對連接運(yùn)行時(shí)間處理器234在檢取到一定數(shù)量的RID之后停止處理給定的半連接,并且之后,該成對連接運(yùn)行時(shí)間處理器234處理下一個(gè)半連接。因此,在某些實(shí)施例中,運(yùn)行時(shí)間執(zhí)行處理器232針對所有的半連接來確定新的報(bào)告閾值,而成對連接運(yùn)行時(shí)間處理器234執(zhí)行每一個(gè)半連接,直到所讀取的RID的數(shù)目與針對所述半連接的報(bào)告閾值相匹配為止。然后,成對連接運(yùn)行時(shí)間處理器234將控制返回到運(yùn)行時(shí)間執(zhí)行處理器232。在塊310,運(yùn)行時(shí)間執(zhí)行處理器232確定是否已完成至少兩個(gè)半連接。如果是,則處理繼續(xù)到塊312,否則處理繼續(xù)到塊314。在塊312,通過分類元件244來組合(例如取與或者取或)已完成的半連接的結(jié)果,并且處理繼續(xù)到塊314。實(shí)施例提供了動(dòng)態(tài)索引取與和取或,來消除對于由查詢優(yōu)化器238所選的半連接順序的依賴,同時(shí)還提供額外的優(yōu)化技術(shù),包括較早地終止差可選性的半連接和暫停差可選性的半連接。在塊314,運(yùn)行時(shí)間執(zhí)行處理器232確定是否要終止任何一個(gè)半連接。如果是,則處理繼續(xù)到塊316,否則處理繼續(xù)到塊318。在塊316,終止某些所標(biāo)識的半連接。在某些實(shí)施例中,終止特定的半連接。在某些實(shí)施例中,可以終止所有未完全執(zhí)行的半連接。即,實(shí)施例在早期終止代價(jià)高的、差可選性的半連接。為了進(jìn)行較早終止,某些實(shí)施例跟蹤中間RID列表的尺寸??梢詫⒅虚gRID列表描述為在處理查詢的同時(shí)產(chǎn)生的任何RID列表,而且該中間RID列表并非最終的列表(例如,中間RID列表是在對來自所執(zhí)行的半連接的兩個(gè)其他中間RID列表進(jìn)行取與之后產(chǎn)生的)。如果在某種程度上,中間RID列表尺寸足夠小,則運(yùn)行時(shí)間執(zhí)行處理器232可以終止所有未完成的在進(jìn)行中的半連接,并且僅使用該中間RID列表作為最終RID列表。一旦存在足夠小的、利用其來訪問表的RID列表,則最后的RID列表就可能不會(huì)小很多了,而且各個(gè)實(shí)施例避免了使用完成所有剩余半連接所需的額外的處理時(shí)間和資源。在塊318,運(yùn)行時(shí)間執(zhí)行處理器232確定是否應(yīng)當(dāng)暫停對于下一個(gè)半連接執(zhí)行周期的任何一個(gè)半連接。如果是,則處理繼續(xù)到塊320,否則處理循環(huán)返回到塊300。在塊320,運(yùn)行時(shí)間執(zhí)行處理器232暫停所標(biāo)識的半連接。在各個(gè)實(shí)施例中,運(yùn)行時(shí)間優(yōu)化器236使用索引管理器240來估計(jì)可以從給定的半連接返回的RID的數(shù)目。以這種方式,運(yùn)行時(shí)間執(zhí)行處理器232根據(jù)所教示的(educated)確定接下來要處理的半連接。例如,如果估計(jì)某個(gè)半連接可能檢取到大量的RID,則可以暫停該半連接。圖4例示了根據(jù)某些另選實(shí)施例而執(zhí)行的邏輯。在塊400中,以運(yùn)行時(shí)間執(zhí)行處理器232確定是否所有的半連接都已完全執(zhí)行或者終止來開始控制。如果所有的半連接都已完成或者終止,則處理繼續(xù)到塊402,否則處理繼續(xù)到塊404。在塊402中,運(yùn)行時(shí)間執(zhí)行處理器232執(zhí)行其他處理。在塊404中,在執(zhí)行時(shí),運(yùn)行時(shí)間執(zhí)行處理器232針對當(dāng)前周期,選擇先前未被終止或者暫停的下一個(gè)要執(zhí)行的半連接。在塊406,在執(zhí)行時(shí),運(yùn)行時(shí)間執(zhí)行處理器232針對當(dāng)前半連接執(zhí)行周期來確定用于所選半連接的RID的數(shù)目,并且可以將該數(shù)目稱為報(bào)告閾值。在塊408,成對連接運(yùn)行時(shí)間處理器234執(zhí)行所選的半連接,直到檢取到所確定的RID數(shù)目為止。因此,在某些實(shí)施例中,一旦達(dá)到報(bào)告閾值,成對連接運(yùn)行時(shí)間處理器234就停止當(dāng)前半連接的處理,并且將控制返回到運(yùn)行時(shí)間執(zhí)行處理器(REP)。這允許運(yùn)行時(shí)間執(zhí)行處理器232對于各個(gè)半連接處理具有更大的控制,并且允許利用運(yùn)行時(shí)間執(zhí)行處理器232確定接下來要處理的半連接,來動(dòng)態(tài)地調(diào)度半連接。因此,在某些實(shí)施例中,運(yùn)行時(shí)間執(zhí)行處理器232選擇要處理的半連接,并且針對該半連接來確定一個(gè)新的報(bào)告閾值。然后,成對連接運(yùn)行時(shí)間處理器234執(zhí)行每一個(gè)半連接,直到所讀取的RID數(shù)目與針對所述半連接的報(bào)告閾值相匹配為止,并且將控制返回到運(yùn)行時(shí)間執(zhí)行處理器232。運(yùn)行時(shí)間執(zhí)行處理器232確定哪些半連接要被終止或者暫停,以及接下來要運(yùn)行哪一個(gè)半連接。在某些實(shí)施例中,利用圖4的處理,對于在一個(gè)半連接執(zhí)行周期中執(zhí)行的每一個(gè)半連接來說,報(bào)告閾值是相同的。在塊410,運(yùn)行時(shí)間執(zhí)行處理器232確定是否已選擇了對于這個(gè)周期要處理的所有半連接。如果是,則處理繼續(xù)到塊412,否則處理繼續(xù)到塊416。在塊412中,運(yùn)行時(shí)間執(zhí)行處理器232確定是否已經(jīng)完成至少兩個(gè)半連接。如果是,則處理繼續(xù)到塊414,否則處理循環(huán)返回到塊404。在塊414,通過分類元件244來組合(例如取與或者取或)已完成的半連接的結(jié)果,并且處理循環(huán)返回到塊404。在塊416,運(yùn)行時(shí)間執(zhí)行處理器232確定是否要終止任何一個(gè)半連接。如果是,則處理繼續(xù)到塊418,否則處理繼續(xù)到塊420。在塊418,終止某些所標(biāo)識的半連接。在某些實(shí)施例中,終止特定的半連接。在某些實(shí)施例中,可以終止所有未完全執(zhí)行的半連接。在塊420,運(yùn)行時(shí)間執(zhí)行處理器232確定對于下一個(gè)半連接執(zhí)行周期是否應(yīng)當(dāng)暫停任何一個(gè)半連接。如果是,則處理繼續(xù)到塊422,否則處理循環(huán)返回到塊400。在塊422,運(yùn)行時(shí)間執(zhí)行處理器232暫停所標(biāo)識的半連接。僅僅出于例示的目的提供了一個(gè)示例。在該示例中,參照查詢(1),當(dāng)準(zhǔn)備了針對查詢(1)的查詢執(zhí)行計(jì)劃時(shí),查詢優(yōu)化器238可以確定下面的取與順序(2)順序(2)1)半連接D1->F,將結(jié)果RID列表保存在結(jié)果R1中2)半連接D2->F,將結(jié)果RID列表保存在結(jié)果R2中3)對結(jié)果R1和結(jié)果R2進(jìn)行AND運(yùn)算,并將結(jié)果保存到結(jié)果R3中4)半連接D3->F,將結(jié)果RID列表保存在結(jié)果R4中5)對結(jié)果R3和結(jié)果R4進(jìn)行AND運(yùn)算,并將結(jié)果保存到結(jié)果R5中利用某些實(shí)施例,在一個(gè)循環(huán)中處理半連接1、2和4,直到其中一個(gè)半連接完成為止。然后,在一個(gè)循環(huán)中處理剩余的兩個(gè)半連接,直到完成為止。在某些實(shí)施例中,并行操作是有效的,在這樣的實(shí)施例中,如果并行操作用于運(yùn)行所述查詢,則可以并行地執(zhí)行半連接1、2和4。利用某些實(shí)施例,期望首先完成產(chǎn)生最小RID列表的半連接(假定維度表的尺寸相對接近并且遠(yuǎn)小于事實(shí)表的尺寸)。期望接下來完成具有次小RID列表的半連接,等等,最后完成產(chǎn)生最大RID列表的半連接。因此,與傳統(tǒng)的實(shí)施方案不同,并不是根據(jù)由查詢優(yōu)化器238選擇的預(yù)定順序來完成半連接。實(shí)施例在不使用并行操作的情況下,實(shí)現(xiàn)半連接的獨(dú)立執(zhí)行。利用某些實(shí)施例,運(yùn)行時(shí)間執(zhí)行處理器232具有控制半連接調(diào)度的能力。在一些實(shí)施例中,可以部分地對各個(gè)半連接進(jìn)行處理,因此在所有半連接之間可以等同地對待每一個(gè)半連接。這就消除了對于由查詢優(yōu)化器238選擇的順序的性能依賴性,并且允許運(yùn)行時(shí)間執(zhí)行處理器232以任何順序來處理這些半連接。例如,參照查詢(1),假定存在80000行滿足“D1.C1=F.C1”判斷式,60000行滿足“D2.C2=F.C2”判斷式,以及20000行滿足“D3.C3=F.C3”判斷式。根據(jù)某些實(shí)施例的查詢的執(zhí)行可以是1)基于RID池尺寸和半連接的數(shù)目來確定合適的報(bào)告閾值。例如,使用諸如(閾值=(RID池尺寸/2)/半連接的#*RID尺寸)這樣的簡化公式來確定報(bào)告閾值。對于該示例,假定報(bào)告閾值為30000。2)處理半連接D1->F(#1)直到報(bào)告閾值。這檢取前30000個(gè)RID。3)處理半連接D2->F(#2)直到報(bào)告閾值。這檢取前30000個(gè)RID。4)處理半連接D3->F(#3)直到報(bào)告閾值。這檢取所有20000個(gè)RID,并且完成半連接#3。5)處理半連接#1直到報(bào)告閾值。這檢取接下來的30000個(gè)RID。6)處理半連接#2直到報(bào)告閾值。這檢取接下來的30000個(gè)RID,并且完成半連接#2。7)對半連接#3的結(jié)果和半連接#2的結(jié)果進(jìn)行AND運(yùn)算。即,20000個(gè)RID與60000個(gè)RID進(jìn)行AND運(yùn)算,產(chǎn)生至多20000個(gè)RID。8)處理半連接#1直到報(bào)告閾值。這要檢取20000個(gè)RID,并且完成半連接#1。9)對任務(wù)7)的結(jié)果和半連接#1的結(jié)果進(jìn)行AND運(yùn)算。即,至多20000個(gè)RID與80000個(gè)RID進(jìn)行AND運(yùn)算,產(chǎn)生至多20000個(gè)RID。在一些實(shí)施例中,通過查詢優(yōu)化器238確定的半連接順序直接與最優(yōu)順序相反,動(dòng)態(tài)索引取與提供大的性能改進(jìn)。例如,在第一半連接返回最多的RID,以及最后一個(gè)半連接返回最少的RID的情況下,實(shí)施例提供了最大的性能改進(jìn)。在某些實(shí)施例中,半連接的數(shù)目越多,動(dòng)態(tài)索引取與相對于常規(guī)系統(tǒng)提供很大的性能改進(jìn)的排序數(shù)就越多。實(shí)施例還對差可選性的半連接提供早期終止。例如,參照查詢(1)和順序(2),如果完成了半連接D3->F和半連接D2->F,則在對結(jié)果R2和結(jié)果R4進(jìn)行取與運(yùn)算之后,最終得到的RID列表尺寸僅為10個(gè)RID,實(shí)施例可以終止半連接D1->F,并且使用所述10個(gè)RID從事實(shí)表中進(jìn)行讀取,同時(shí)再次運(yùn)用所述連接判斷式,來獲得最終結(jié)果。當(dāng)所終止的半連接導(dǎo)致相當(dāng)大的RID列表時(shí),這改善了性能。在參照順序(2)的示例中,半連接D1->F產(chǎn)生了最大的RID列表,因此當(dāng)終止該半連接時(shí),這些實(shí)施例避免了讀取所有的用于半連接D1->F的RID。同樣,即使對半連接D1->F的結(jié)果與所述10個(gè)RID結(jié)果進(jìn)行取與產(chǎn)生一個(gè)空的RID列表(即,因?yàn)闆]有行滿足連接,所以是最小可能的結(jié)果),但與等待半連接D1>F的完成而后執(zhí)行取與相比,仍然可以更快地讀取事實(shí)表的10行并且應(yīng)用該連接判斷式。實(shí)施例對差可選性的半連接提供暫停。參照查詢(1)和順序(2),對全部三個(gè)半連接進(jìn)行處理,直到報(bào)告閾值。然后,運(yùn)行時(shí)間執(zhí)行處理器232可以調(diào)用索引管理器240來估計(jì)可能為各個(gè)半連接返回的RID的數(shù)目。假定索引管理器表明了用于半連接D1->F的較大的數(shù)量,則運(yùn)行時(shí)間執(zhí)行處理器232可以臨時(shí)暫停半連接D1->F的處理,同時(shí)首先集中完成半連接D2->F和D3->F。實(shí)施例提供了用于控制半連接調(diào)度的運(yùn)行時(shí)間執(zhí)行處理器232。運(yùn)行時(shí)間執(zhí)行處理器232能夠估計(jì)各個(gè)半連接的RID列表的尺寸,并且通過允許暫停多個(gè)半連接來改善RID池的管理。例如,如果估計(jì)其中一個(gè)半連接要返回大的RID列表,則運(yùn)行時(shí)間執(zhí)行處理器232可以臨時(shí)暫停該半連接的執(zhí)行,以允許其他半連接在對于RID池的較小的競爭下完成。在某些實(shí)施例中,運(yùn)行時(shí)間執(zhí)行處理器232甚至可以使用查詢優(yōu)化器238提供的執(zhí)行順序來暫停差可選性的半連接。圖5例示了根據(jù)某些實(shí)施例的數(shù)據(jù)存儲管理器230的細(xì)節(jié)。在圖5中,存在半連接池514。數(shù)據(jù)存儲管理器230包括運(yùn)行時(shí)間執(zhí)行處理器232、成對連接運(yùn)行時(shí)間處理器234,和與其他元件(例如,索引管理器240、讀取元件242和分類元件244)一同工作的運(yùn)行時(shí)間優(yōu)化器236。成對連接運(yùn)行時(shí)間處理器234基于由運(yùn)行時(shí)間執(zhí)行處理器232確定的排序從半連接池514中選擇半連接。成對連接運(yùn)行時(shí)間處理器234調(diào)用讀取元件242,以通過讀取RID來處理半連接。成對連接運(yùn)行時(shí)間處理器234調(diào)用分類元件244進(jìn)行分類并且與RID列表相交叉(即用于執(zhí)行取與)。運(yùn)行時(shí)間執(zhí)行處理器232調(diào)用運(yùn)行時(shí)間優(yōu)化器236來提供優(yōu)化信息。運(yùn)行時(shí)間優(yōu)化器236根據(jù)所教示的進(jìn)行優(yōu)化決定,以設(shè)置新的報(bào)告閾值并挑選下一個(gè)要被處理的半連接。將這些決定稱之為“根據(jù)所教示的(educated)”,原因在于它們基于一些從各個(gè)半連接執(zhí)行中報(bào)告的某些統(tǒng)計(jì)結(jié)果,并且還基于某些啟發(fā)式規(guī)則。運(yùn)行時(shí)間優(yōu)化器236可以調(diào)用其他的元件。例如,運(yùn)行時(shí)間優(yōu)化器236可以調(diào)用索引管理器540來估計(jì)用于某個(gè)半連接的RID。在某些實(shí)施例中,可以基于所掃描的葉級頁(leafpage)的數(shù)目和每頁的索引關(guān)鍵字的平均數(shù)目來估計(jì)RID的數(shù)目。這可以通過對襯底頁的父頁(parent)中的子頁(childpage)進(jìn)行計(jì)數(shù)來有效地計(jì)算出。例如,在所累積的RID的總數(shù)超過原始綁定時(shí)間估計(jì)時(shí)、在另一半連接已經(jīng)完成時(shí)(由于RID存儲限制的原因),以及在超過所計(jì)算出的或者參數(shù)化的閾值時(shí),來執(zhí)行該操作。運(yùn)行時(shí)間優(yōu)化器236還使用有效的系統(tǒng)資源信息(例如當(dāng)前RID池尺寸、激活的半連接數(shù)目等等)來為運(yùn)行時(shí)間執(zhí)行處理器232提供優(yōu)化信息??梢詫?dāng)前RID池的尺寸描述為可用于存儲RID(同時(shí)處理一個(gè)查詢)的存儲器的數(shù)量??梢詫⒓せ畹陌脒B接的數(shù)目描述為沒有完成處理的半連接的數(shù)目。運(yùn)行時(shí)間執(zhí)行處理器232通過在選擇處理哪個(gè)半連接時(shí)根據(jù)所教示的作出決定,來以動(dòng)態(tài)調(diào)度的方式執(zhí)行半連接。運(yùn)行時(shí)間執(zhí)行處理器232可以調(diào)用運(yùn)行時(shí)間優(yōu)化器236來確定用于各個(gè)所讀取的RID的最佳數(shù)量(報(bào)告閾值),或者幫助確定哪一個(gè)半連接將要被處理。一旦選擇了一個(gè)半連接,就通過成對連接處理器234來調(diào)用讀取元件242來處理該半連接。當(dāng)所述半連接已經(jīng)完成(例如,完成了維度對事實(shí)的半連接而且得到的RID列表有效)或者已經(jīng)處理了相當(dāng)于報(bào)告閾值的多個(gè)RID時(shí),讀取元件242的處理停止,并且將控制返回到成對連接運(yùn)行時(shí)間處理器234。如果沒有完成剛被處理的半連接,則成對連接運(yùn)行時(shí)間處理器234將半連接返回給未處理的半連接池510,并且選擇下一個(gè)要被處理的半連接。如果完成了剛被處理的半連接,則成對連接運(yùn)行時(shí)間處理器234調(diào)用分類元件244以對最終得到的RID列表進(jìn)行分類,如果這是完成的第一個(gè)半連接,則成對連接運(yùn)行時(shí)間處理器234將被分類的RID列表存儲到累積的RID列表550中。如果這不是完成的第一個(gè)半連接,則成對連接運(yùn)行時(shí)間處理器234調(diào)用分類元件244,以對已分類的半連接結(jié)果RID列表與累積的RID列表550進(jìn)行AND操作,并且將該結(jié)果存儲到累積的RID列表550中。然后,成對連接運(yùn)行時(shí)間處理器234處理下一個(gè)半連接。該處理將一直持續(xù)直到完成或者終止了所有的半連接執(zhí)行為止。當(dāng)完成或者終止了所有的半連接時(shí),累積的RID列表550就是最終所得的RID列表。可以由運(yùn)行時(shí)間執(zhí)行處理器232調(diào)用的運(yùn)行時(shí)間優(yōu)化器236實(shí)現(xiàn)用于終止和暫停半連接的運(yùn)行時(shí)間優(yōu)化技術(shù)。運(yùn)行時(shí)間優(yōu)化器236分析關(guān)于半連接的有效信息并且作出關(guān)于半連接處理的決定。例如,運(yùn)行時(shí)間優(yōu)化器236可以調(diào)用索引管理器240來估計(jì)用于特定半連接的剩余RID的數(shù)量。運(yùn)行時(shí)間優(yōu)化器236還可以將所有或者一些特定的半連接處理應(yīng)當(dāng)被終止或者暫停的消息傳遞到運(yùn)行時(shí)間執(zhí)行處理器232。盡管將某些處理描述為通過運(yùn)行時(shí)間執(zhí)行處理器232來執(zhí)行,并且將某些處理描述為通過成對連接運(yùn)行時(shí)間處理器234來執(zhí)行,但是在不同的實(shí)施例中,可以通過運(yùn)行時(shí)間執(zhí)行處理器232、成對連接運(yùn)行時(shí)間處理器234或者這些處理器232、234的組合來執(zhí)行不同的處理。同樣,在某些實(shí)施例中,組合運(yùn)行時(shí)間執(zhí)行處理器232和成對連接運(yùn)行時(shí)間處理器234的功能來形成一個(gè)元件。其他實(shí)施例的細(xì)節(jié)這里所描述的操作可以實(shí)現(xiàn)為使用標(biāo)準(zhǔn)程序和/或工程技術(shù)來產(chǎn)生產(chǎn)品軟件、固件、硬件或其任意組合的方法、計(jì)算機(jī)程序產(chǎn)品或者裝置。各個(gè)實(shí)施例都可以采用全部為硬件的實(shí)施例的形式,全部為軟件的實(shí)施例的形式或者既包含硬件元件又包含軟件元件的實(shí)施例。這些實(shí)施例可以實(shí)現(xiàn)為軟件,其包括但不限于固件、駐留的軟件、微代碼等。此外,這些實(shí)施例還可以采用計(jì)算機(jī)程序產(chǎn)品的形式,其可以從提供了要由計(jì)算機(jī)或者任何指令執(zhí)行系統(tǒng)使用或者結(jié)合它們使用的程序代碼的、計(jì)算機(jī)可用的或者計(jì)算機(jī)可讀的介質(zhì)進(jìn)行存取。為了描述的目的,計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)可以是任何設(shè)備,這些設(shè)備可以包括、存儲、傳遞、傳播或者發(fā)送由指令執(zhí)行系統(tǒng)、設(shè)備或者裝置使用或者結(jié)合它們使用的程序。所述操作可以實(shí)現(xiàn)為在計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)中保持的代碼,其中處理器可以讀取并執(zhí)行來自計(jì)算機(jī)可讀介質(zhì)的代碼。該介質(zhì)可以是電子的、磁的、光的、電磁的、紅外的或者半導(dǎo)體系統(tǒng)(或者設(shè)備或者裝置)或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或者固態(tài)存儲器、磁帶、可移動(dòng)計(jì)算機(jī)軟盤、硬磁盤、光盤、磁性存儲介質(zhì)(例如硬盤驅(qū)動(dòng)、軟盤、磁帶等)、易失性和非易失性存儲設(shè)備(例如隨機(jī)存取存儲器(RAM)、DRAM、SRAM、只讀存儲器(ROM)、PROM、EEPROM、閃存、固件、可編程邏輯等)。目前光盤的示例包括只讀存儲光盤(CD-ROM)、讀/寫光盤(CD-R/W)及DVD。實(shí)現(xiàn)所述操作的代碼還可以實(shí)現(xiàn)為硬件邏輯(例如集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)。此外,實(shí)現(xiàn)所述操作的代碼還可以實(shí)現(xiàn)為“傳輸信號”,其中傳輸信號可以通過空間或者通過諸如光纖、銅導(dǎo)線等的傳輸介質(zhì)進(jìn)行傳播。其中對代碼或者邏輯進(jìn)行了編碼的傳輸信號還包括無線信號、衛(wèi)星傳輸、無線電波、紅外信號、藍(lán)牙等。其中對代碼或者邏輯進(jìn)行了編碼的傳輸信號能夠通過發(fā)射站進(jìn)行發(fā)送,并且通過接收站來接收,其中在傳輸信號中被編碼的代碼或者邏輯可以在接收和發(fā)射站或者設(shè)備上被解碼并且保存到硬件或者計(jì)算機(jī)可讀介質(zhì)中。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì),硬件邏輯和/或其中可以實(shí)現(xiàn)代碼的傳輸信號。當(dāng)然,所屬
技術(shù)領(lǐng)域:
的技術(shù)人員應(yīng)當(dāng)理解可以在不脫離上述實(shí)施例范圍的情況下對該配置進(jìn)行許多修改,而且所述計(jì)算機(jī)程序產(chǎn)品可以包括現(xiàn)有技術(shù)中公知的任意合適的信息承載介質(zhì)。術(shù)語邏輯可以包括例如軟件、硬件、固件和/或軟件和硬件的組合。某些實(shí)施例可以旨在提供一種用于將計(jì)算基礎(chǔ)設(shè)施通過人或者自動(dòng)化處理集成計(jì)算機(jī)可讀代碼布置到計(jì)算系統(tǒng)中的方法,其中所述代碼與計(jì)算系統(tǒng)相結(jié)合就能夠執(zhí)行所描述的實(shí)施例的操作。圖3和圖4的邏輯描述了以特定順序進(jìn)行的特定操作。在另選實(shí)施例中,可能以不同的順序來執(zhí)行、修改或者刪除某些邏輯操作。此外,可以將操作添加到上述邏輯并且與上述實(shí)施例仍然一致。此外,這里所述的操作可以依次出現(xiàn),或者可以并行地處理某些操作,或者可以通過分步式處理來執(zhí)行由單一處理所執(zhí)行的上述操作。圖3和圖4所例示的邏輯可以軟件、硬件、可編程和不可編程門陣列邏輯,或者硬件、軟件或門陣列邏輯的某種組合來實(shí)現(xiàn)。圖6例示了可以根據(jù)某些實(shí)施例使用的系統(tǒng)結(jié)構(gòu)600。客戶計(jì)算機(jī)100和/或服務(wù)器計(jì)算機(jī)120可以實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)600。系統(tǒng)結(jié)構(gòu)600適合于存儲和/或執(zhí)行程序代碼,并且包括至少一個(gè)直接或間接通過系統(tǒng)總線620與存儲器元件604相連的處理器602。存儲器元件604可以包括在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲器、大容量存儲器和高速緩沖存儲器,所述高速緩沖存儲器用于提供至少一些程序代碼的臨時(shí)存儲,以便減少在執(zhí)行期間必須從大容量存儲器檢取代碼的次數(shù)。存儲器元件604包括操作系統(tǒng)605以及一個(gè)或者多個(gè)計(jì)算機(jī)程序606。輸入/輸出(I/O)設(shè)備612、614(包括但不限于鍵盤、顯示器、指示設(shè)備等)可以直接或者通過插入(intervening)I/O控制器610耦合到系統(tǒng)。網(wǎng)絡(luò)適配器608還可以耦合到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過插入專用或者公用網(wǎng)絡(luò)耦合到其他數(shù)據(jù)處理系統(tǒng)或者遠(yuǎn)程指示器或者存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅僅是當(dāng)前可用的網(wǎng)絡(luò)適配器608類型中的幾種。系統(tǒng)結(jié)構(gòu)600可以耦合到存儲器616(例如非易失性存儲區(qū)域,諸如磁盤驅(qū)動(dòng)、光盤驅(qū)動(dòng)、磁帶驅(qū)動(dòng)等)。存儲設(shè)備616可以包括內(nèi)部存儲設(shè)備或者附加的或者網(wǎng)絡(luò)可存取的存儲設(shè)備。在存儲設(shè)備616中的計(jì)算機(jī)程序606可以被加載到存儲器元件604中,并且以現(xiàn)有技術(shù)中已知的方式通過處理器602來執(zhí)行。系統(tǒng)結(jié)構(gòu)600可以包括比所例示的元件略少的元件,或者此處未示出其他的元件,或者所例示的元件的某些組合及其他的元件。系統(tǒng)結(jié)構(gòu)600可以包括任何現(xiàn)有技術(shù)中已知的計(jì)算設(shè)備,如主機(jī)、服務(wù)器、個(gè)人計(jì)算機(jī)、工作站、膝上型電腦、手持計(jì)算機(jī)、電話設(shè)備、網(wǎng)絡(luò)設(shè)備、虛擬設(shè)備、存儲控制器等。出于例示或者描述的目的給出了上面描述的本發(fā)明的實(shí)施例。并不旨在將這些實(shí)施例窮舉于或者限制于這里所公開的精確形式。根據(jù)上述教導(dǎo)可以進(jìn)行多種修改和變型。并不旨在通過這些詳細(xì)的描述來限制各個(gè)實(shí)施例的范圍,而是通過所附的權(quán)利要求來限制。上面的說明、示例和數(shù)據(jù)提供了對這些實(shí)施例的組成的生成及使用的完整描述。由于可以在不脫離本發(fā)明精神和范圍的情況下對多個(gè)實(shí)施例進(jìn)行修改,所以這些實(shí)施例仍然屬于后面附加的權(quán)利要求、或者任何隨后提交的權(quán)利要求及其等價(jià)物的保護(hù)范圍內(nèi)。權(quán)利要求1.一種用于處理含有多個(gè)半連接的查詢的由計(jì)算機(jī)實(shí)現(xiàn)的方法,包括在執(zhí)行時(shí),從在當(dāng)前半連接執(zhí)行周期中執(zhí)行的所述半連接中選擇下一個(gè)半連接;確定報(bào)告閾值,所述報(bào)告閾值表明了針對所確定的半連接要檢取的記錄標(biāo)識符的數(shù)目;執(zhí)行所選的半連接,直到檢取到所確定數(shù)目個(gè)記錄標(biāo)識符為止。2.根據(jù)權(quán)利要求1的方法,其中所述報(bào)告閾值對于所述半連接中的每一個(gè)都是相同的報(bào)告閾值。3.根據(jù)權(quán)利要求1的方法,其中所述報(bào)告閾值對于所述半連接中的兩個(gè)或者更多個(gè)是不同的。4.根據(jù)權(quán)利要求1的方法,其中針對半連接的所述報(bào)告閾值至少兩個(gè)周期就要變化。5.根據(jù)權(quán)利要求1的方法,還包括確定已完成至少兩個(gè)半連接;以及對來自所述至少兩個(gè)半連接的結(jié)果進(jìn)行組合。6.根據(jù)權(quán)利要求1的方法,還包括確定是否要終止所述半連接中的任何一個(gè);以及終止任何確定的半連接。7.根據(jù)權(quán)利要求6的方法,其中確定未完全執(zhí)行的所有半連接要被終止,并且終止這些半連接。8.根據(jù)權(quán)利要求1的方法,還包括確定是否要暫停半連接中的任何一個(gè);以及暫停任何確定的半連接。9.根據(jù)權(quán)利要求1的方法,其中所選的半連接包括對于當(dāng)前周期先前沒有終止或者暫停的半連接。10.一種計(jì)算機(jī)程序產(chǎn)品,包括含有計(jì)算機(jī)可讀程序的計(jì)算機(jī)可用介質(zhì),其中所述計(jì)算機(jī)可讀程序在計(jì)算機(jī)上執(zhí)行時(shí)使計(jì)算機(jī)執(zhí)行權(quán)利要求1到9中任何一個(gè)的步驟。11.一種用于處理含有多個(gè)半連接的查詢的系統(tǒng),包括能夠執(zhí)行操作的邏輯,所述操作包括在執(zhí)行時(shí),從在當(dāng)前半連接執(zhí)行周期中執(zhí)行的所述半連接中選擇下一個(gè)半連接;確定報(bào)告閾值,所述報(bào)告閾值表明了針對所確定的半連接要檢取的記錄標(biāo)識符的數(shù)目;以及執(zhí)行所選的半連接,直到檢取到所確定數(shù)目個(gè)記錄標(biāo)識符為止。12.根據(jù)權(quán)利要求11的系統(tǒng),其中所述報(bào)告閾值對于所述半連接中的每一個(gè)都是相同的報(bào)告閾值。13.根據(jù)權(quán)利要求11的系統(tǒng),其中所述報(bào)告閾值對于所述半連接中的兩個(gè)或者更多個(gè)是不同的。14.根據(jù)權(quán)利要求11的系統(tǒng),其中針對半連接的所述報(bào)告閾值至少兩個(gè)周期就要變化。15.根據(jù)權(quán)利要求11的系統(tǒng),其中所述操作還包括確定已完成至少兩個(gè)半連接;以及對來自所述至少兩個(gè)半連接的結(jié)果進(jìn)行組合。16.根據(jù)權(quán)利要求11的系統(tǒng),其中所述操作還包括確定是否要終止所述半連接中的任何一個(gè);以及終止任何確定的半連接。17.根據(jù)權(quán)利要求15的系統(tǒng),其中確定未完全執(zhí)行的所有半連接要被終止,并且終止這些半連接。18.根據(jù)權(quán)利要求11的系統(tǒng),其中所述操作還包括確定是否要暫停所述半連接中的任何一個(gè);以及暫停任何確定的半連接。19.根據(jù)權(quán)利要求11的系統(tǒng),其中所選的半連接包括對于當(dāng)前周期先前沒有終止或者暫停的半連接。全文摘要本發(fā)明提供了一種用于處理包括多個(gè)半連接的查詢的技術(shù)。在執(zhí)行時(shí),從用于在當(dāng)前半連接執(zhí)行周期中執(zhí)行的半連接中選擇下一個(gè)半連接。確定一個(gè)報(bào)告閾值,該閾值指明了針對所確定的半連接要檢取的記錄標(biāo)識符的數(shù)目。執(zhí)行所選擇的半連接,直到檢取到所確定數(shù)目個(gè)記錄標(biāo)識符為止。文檔編號G06F17/30GK1928866SQ20061011078公開日2007年3月14日申請日期2006年8月8日優(yōu)先權(quán)日2005年9月9日發(fā)明者傅毓勤,林棻玲,安德列·弗德羅維奇·盧里耶,特倫斯·帕特里克·布爾塞爾,過陽一,夏立申請人:國際商業(yè)機(jī)器公司