面向集合的可見(jiàn)性狀態(tài)檢索方案的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明設(shè)及可見(jiàn)性狀態(tài)檢索(VSR),具體設(shè)及面向集合的可見(jiàn)性狀態(tài)檢索方案。【
背景技術(shù):
】[0002]可見(jiàn)性狀態(tài)檢索(VSR)操作被用于決定一個(gè)或更多個(gè)指定行是否應(yīng)當(dāng)對(duì)于給定查詢可見(jiàn)。在其事務(wù)處理是基于多版本并發(fā)控制(MVCC)或快照隔離的數(shù)據(jù)庫(kù)系統(tǒng)中,指定行對(duì)于給定查詢的可見(jiàn)性一般基于該行是最近何時(shí)被修改的W及該查詢是何時(shí)開(kāi)始的來(lái)決定。通常,對(duì)于查詢需要檢查的行的狀態(tài)被單個(gè)逐一地進(jìn)行遍歷。然而,對(duì)于可能需要訪問(wèn)表格中的大量行或者表格中的全部行的分析查詢,運(yùn)種面向行的VSR操作帶來(lái)很高的事務(wù)成本,因?yàn)檫\(yùn)是對(duì)于每一行逐一進(jìn)行的。【
發(fā)明內(nèi)容】[0003]根據(jù)本發(fā)明的一個(gè)方面,提供一種用于確定行可見(jiàn)性狀態(tài)的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括:由至少一個(gè)處理器,基于與行對(duì)應(yīng)的行狀態(tài)位圖的可見(jiàn)行狀態(tài)值,初始化行的結(jié)果位圖,其中,結(jié)果位圖的值指示行是可見(jiàn)的還是不可見(jiàn)的;由至少一個(gè)處理器,確定一個(gè)或更多個(gè)行,所述一個(gè)或更多個(gè)行的相應(yīng)的可見(jiàn)行狀態(tài)值指示所述一個(gè)或更多個(gè)行是不可見(jiàn)的;W及由至少一個(gè)處理器,基于一個(gè)或更多個(gè)版本化的行狀態(tài)值來(lái)確定是否更新結(jié)果位圖W指示所述一個(gè)或更多個(gè)行是可見(jiàn)的,其中,一個(gè)或更多個(gè)版本化的行狀態(tài)值指示相應(yīng)的行是不可見(jiàn)的或者可能是可見(jiàn)的。[0004]根據(jù)本發(fā)明的一個(gè)方面,提供一種系統(tǒng),包括:存儲(chǔ)器;W及至少一個(gè)處理器,禪合到所述存儲(chǔ)器并且被配置為:基于與行對(duì)應(yīng)的行狀態(tài)位圖的可見(jiàn)行狀態(tài)值,初始化行的結(jié)果位圖,其中,結(jié)果位圖的值指示行是可見(jiàn)的還是不可見(jiàn)的;確定一個(gè)或更多個(gè)行,所述一個(gè)或更多個(gè)行的相應(yīng)可見(jiàn)行狀態(tài)值指示所述一個(gè)或更多個(gè)行是不可見(jiàn)的;W及基于一個(gè)或更多個(gè)版本化的行狀態(tài)值,來(lái)確定是否更新結(jié)果位圖W指示所述一個(gè)或更多個(gè)行是可見(jiàn)的,其中一個(gè)或更多個(gè)版本化的行狀態(tài)值指示相應(yīng)行是不可見(jiàn)的或者可能是可見(jiàn)的。[000引根據(jù)本發(fā)明的一個(gè)方面,提供一種有形計(jì)算機(jī)可讀設(shè)備,具有存儲(chǔ)在其上的指令,所述指令當(dāng)被至少一個(gè)計(jì)算設(shè)備運(yùn)行時(shí),使得所述至少一個(gè)計(jì)算設(shè)備執(zhí)行W下操作,包括:基于與行對(duì)應(yīng)的行狀態(tài)位圖的可見(jiàn)行狀態(tài)值,初始化行的結(jié)果位圖,其中,結(jié)果位圖的值指示行是可見(jiàn)的還是不可見(jiàn)的;確定一個(gè)或更多個(gè)行,所述一個(gè)或更多個(gè)行的相應(yīng)可見(jiàn)行狀態(tài)值指示所述一個(gè)或更多個(gè)行是不可見(jiàn)的;W及基于一個(gè)或更多個(gè)版本化的行狀態(tài)值,來(lái)確定是否更新結(jié)果位圖W指示所述一個(gè)或更多個(gè)行是可見(jiàn)的,其中所述一個(gè)或更多個(gè)版本化的行狀態(tài)值指示相應(yīng)行是不可見(jiàn)的或者可能是可見(jiàn)的?!靖綀D說(shuō)明】[0006]附圖被合并在此并且構(gòu)成本說(shuō)明書(shū)的一部分。[0007]圖1是根據(jù)示例實(shí)施例的數(shù)據(jù)庫(kù)系統(tǒng)的框圖。[0008]圖2是根據(jù)示例實(shí)施例的MVCC結(jié)構(gòu)的框圖。[0009]圖3是示出根據(jù)示例實(shí)施例的用于確定行可見(jiàn)性狀態(tài)的過(guò)程的流程圖。[0010]圖4是示出用于實(shí)現(xiàn)各種實(shí)施的示例計(jì)算機(jī)系統(tǒng)。[0011]在圖中,相似的參考標(biāo)號(hào)一般指示相同或相似的元素。此外,通常,參考標(biāo)號(hào)的最左側(cè)的數(shù)字表明該參考標(biāo)號(hào)第一次出現(xiàn)的圖?!揪唧w實(shí)施方式】[0012]運(yùn)里提供用于確定行可見(jiàn)性狀態(tài)的系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品,和/或它們的組合和子組合。[0013]圖1是根據(jù)示例實(shí)施例的用于確定行可見(jiàn)性狀態(tài)的數(shù)據(jù)庫(kù)系統(tǒng)100的框圖。數(shù)據(jù)庫(kù)系統(tǒng)100包括數(shù)據(jù)庫(kù)管理系統(tǒng)140和與DBMS140通信的客戶端IIOdDBMS140可W是在服務(wù)器上運(yùn)行并且對(duì)于客戶端110來(lái)說(shuō)是通過(guò)網(wǎng)絡(luò),比如,網(wǎng)絡(luò)120,可訪問(wèn)的系統(tǒng),如下所述。雖然客戶端110在圖1中被表示為與DBMS140分離的物理機(jī)器,但是運(yùn)是作為示例而不是為了限制來(lái)表示的。在另外的實(shí)施例中,客戶端110與DBMS140占用同一個(gè)物理系統(tǒng)。在再一個(gè)實(shí)施例中,客戶端110是需要訪問(wèn)DBMS140的軟件應(yīng)用。客戶端110能夠請(qǐng)求訪問(wèn)DBMS140。另外,客戶端110和DBMS140都能夠在計(jì)算機(jī)系統(tǒng),比如,圖4中討論的示例計(jì)算機(jī)系統(tǒng)中運(yùn)行。[0014]客戶端110和DBMS140能夠通過(guò)網(wǎng)絡(luò)120通信。網(wǎng)絡(luò)120可W是能夠攜帶數(shù)據(jù)通信的任何網(wǎng)絡(luò)或網(wǎng)絡(luò)的組合。運(yùn)樣的網(wǎng)絡(luò)120可W包括但不限于局域網(wǎng)、城域網(wǎng)和/或包括因特網(wǎng)的廣域網(wǎng)。[001日]關(guān)系數(shù)據(jù)庫(kù)是被組織為正式描述表格(formal1廠describedtable)的集合的數(shù)據(jù)項(xiàng)的匯集,從運(yùn)些正式描述表格中,數(shù)據(jù)可W被訪問(wèn)或者可許多不同的方式重新集結(jié),而無(wú)需重新組織運(yùn)些數(shù)據(jù)庫(kù)表格。關(guān)系數(shù)據(jù)庫(kù)采用包含被擬合到預(yù)定義的類別中的數(shù)據(jù)的表格的集合。[0016]每個(gè)表格本身包括一個(gè)或更多個(gè)行或記錄(元組)。數(shù)據(jù)庫(kù)可W包含許多表格,表格中的每個(gè)存儲(chǔ)信息。關(guān)系數(shù)據(jù)庫(kù)中的表格可W包含例如幾行到幾百萬(wàn)行。行被劃分為字段(field)或列;每個(gè)字段或列表示給定行的一個(gè)具體屬性。例如,與雇員記錄對(duì)應(yīng)的行可W包括關(guān)于雇員的ID號(hào)碼、姓氏和名字的首字母、職位、雇用日期、社會(huì)安全號(hào)碼和薪水的信息。運(yùn)些類別中的每一個(gè)反過(guò)來(lái)表示數(shù)據(jù)庫(kù)字段或列。例如,在前述的雇員表格中,職位是一列,雇用日期是另一列,等等。利用運(yùn)個(gè)格式,表格對(duì)于用戶來(lái)說(shuō)容易理解和使用。而且,表格的靈活性允許用戶根據(jù)需要定義數(shù)據(jù)各種數(shù)據(jù)項(xiàng)之間的關(guān)系。因此,記錄可W包括若個(gè)類別的信息,例如,關(guān)于個(gè)人、地點(diǎn)或事物的信息。表格中的每一行由記錄標(biāo)識(shí)符或行標(biāo)識(shí)符("RID")唯一標(biāo)識(shí),所述記錄標(biāo)識(shí)符或行標(biāo)識(shí)符("RID")可W被用作給定行的指針。[0017]在實(shí)施例中,行和/或列被存儲(chǔ)在一個(gè)或多個(gè)表格180中。表格180的行和/或列的任何組合都可W被壓縮地或非壓縮地存儲(chǔ)在表格180中。表格180的數(shù)據(jù)可W使用行壓縮、頁(yè)-字典壓縮、頁(yè)-索引壓縮、列壓縮或它們的任何組合來(lái)壓縮。表格180的壓縮的行和/或列每個(gè)都可W用不同的壓縮類型來(lái)壓縮。表格180的行和/或列可W被存儲(chǔ)在存儲(chǔ)器中。[0018]DBMS140從客戶端110接收查詢,比如,查詢102。查詢102被用于請(qǐng)求、修改、附加或W其它方式操縱或訪問(wèn)數(shù)據(jù)庫(kù)存儲(chǔ)器150中的數(shù)據(jù)。查詢102由客戶端110使用符合查詢語(yǔ)言的語(yǔ)法發(fā)送給DBMS140。在非限制性實(shí)施例中,查詢語(yǔ)言是結(jié)構(gòu)化查詢語(yǔ)言("SQL"),但是可W是另一種查詢語(yǔ)言,舉個(gè)幾個(gè)例子,比如,S化腳本(一種用于描述數(shù)據(jù)庫(kù)內(nèi)部的應(yīng)用特定計(jì)算的腳本語(yǔ)言)、多維表達(dá)式(MDX)、用于數(shù)據(jù)圖表處理的WIPE(弱結(jié)構(gòu)信息處理和探索)W及FOX(用于規(guī)劃應(yīng)用)dDBMS140能夠按照查詢語(yǔ)言解釋查詢102,基于該解釋,生成對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)器150的請(qǐng)求。[0019]查詢102可W由用戶使用客戶端110或由在客戶端110上運(yùn)行的應(yīng)用來(lái)生成。在接收到查詢102時(shí),DBMS140開(kāi)始處理查詢102。一旦被處理完,經(jīng)處理的查詢的結(jié)果就被發(fā)送到客戶端110,作為查詢結(jié)果104。[0020]在實(shí)施例中,查詢102包括一個(gè)或更多個(gè)子查詢。子查詢是另一查詢內(nèi)包括的查詢。任何子查詢都可W包括一個(gè)或更多個(gè)子查詢。[0021]為了處理查詢102,DBMS140包括引擎160,其包括解析器162、正規(guī)化器164、編譯器166和運(yùn)行單元168。[0022]解析器162解析所接收的查詢102。在實(shí)施例中,解析器162將查詢102轉(zhuǎn)換成二叉樹(shù)數(shù)據(jù)結(jié)構(gòu),其表示查詢102的格式。在其他實(shí)施例中,使用其它類型的數(shù)據(jù)結(jié)構(gòu)。[0023]當(dāng)解析完成時(shí),解析器162將經(jīng)解析的查詢傳遞到正規(guī)化器164。正規(guī)化器164將經(jīng)解析的查詢正規(guī)化。例如,正規(guī)化器164從經(jīng)解析的查詢中消除冗余的SQL構(gòu)造。正規(guī)化器164還對(duì)經(jīng)解析的查詢執(zhí)行糾錯(cuò),從而確認(rèn)經(jīng)解析的查詢中的表格的名稱符合表格180的名稱。正規(guī)化器164還確認(rèn)經(jīng)解析的查詢所描述的表格180之間的關(guān)系是有效的。[0024]一旦正規(guī)化完成,正規(guī)化器164就將經(jīng)正規(guī)化的查詢傳遞給編譯器166。編譯器166將經(jīng)正規(guī)化的查詢編譯成機(jī)器可讀的格式。編譯過(guò)程確定查詢當(dāng)前第1頁(yè)1 2 3 4