本申請要求于2014年3月28日遞交的發(fā)明名稱為“在基于記錄的多版本并發(fā)控制中進(jìn)行一致性讀取的有效方法和系統(tǒng)”的第14/229,519號美國專利申請案的在先申請優(yōu)先權(quán),該在先申請的內(nèi)容以引入的方式并入本文。本申請要求于2014年3月28日遞交的發(fā)明名稱為“優(yōu)化對索引的多版本支持的系統(tǒng)和方法”的第14/229,638號美國專利申請案的在先申請優(yōu)先權(quán),該在先申請的內(nèi)容以引入的方式并入本文。
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種數(shù)據(jù)庫管理的系統(tǒng)和方法,以及在具體實(shí)施例中,涉及對一種索引的多版本支持的系統(tǒng)和方法。
背景技術(shù):
::數(shù)據(jù)庫管理系統(tǒng)常常通過多版本并發(fā)控制(multi-versionconcurrencycontrol,MVCC)提供高并發(fā)性以及快照讀取一致性。MVCC索引支持對性能和可擴(kuò)展性至關(guān)重要。例如,有效的索引支持對數(shù)據(jù)庫性能和可擴(kuò)展性至關(guān)重要。B+樹(或B樹)常用于數(shù)據(jù)庫的索引。由于對高并發(fā)性的要求,B樹索引的操作相當(dāng)復(fù)雜。存在少量用于支持索引的多版本的方法。有些方法與標(biāo)準(zhǔn)B樹截然不同。其他方法處理索引頁與數(shù)據(jù)頁的方式相同,通過撤銷,包括基于頁面或基于行的撤銷,來獲得歷史圖像。由于B樹的頁拆分,頁面撤銷并非總是直接的。因此,雖然MVCC索引支持至關(guān)重要,但是有效的索引MVCC支持一直是個(gè)挑戰(zhàn)。技術(shù)實(shí)現(xiàn)要素:根據(jù)一實(shí)施例,一種在數(shù)據(jù)處理系統(tǒng)中進(jìn)行數(shù)據(jù)庫管理的方法包括:通過所述數(shù)據(jù)庫管理系統(tǒng)根據(jù)記錄對應(yīng)的索引葉頁記錄中的刪除指示,判斷所述記錄是否已刪除;當(dāng)所述記錄未刪除時(shí),根據(jù)所述索引葉頁記錄中的新記錄指示并根據(jù)事務(wù)開始點(diǎn)的系統(tǒng)提交事務(wù)標(biāo)識(transactionidentifier,TxID)與從所述索引葉頁記錄獲得的記錄提交TxID的比較,通過所述數(shù)據(jù)庫管理系統(tǒng)判斷所述記錄是否可見。根據(jù)一實(shí)施例,一種用于管理數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng),包括:處理器;計(jì)算機(jī)可讀存儲介質(zhì),用于存儲所述處理器的執(zhí)行程序,所述程序包括指令以:根據(jù)記錄對應(yīng)的索引葉頁記錄中的刪除指示,判斷所述記錄是否已刪除;當(dāng)所述記錄未刪除時(shí),根據(jù)所述索引葉頁記錄中的新記錄指示并根據(jù)事務(wù)開始點(diǎn)的系統(tǒng)提交事務(wù)標(biāo)識(transactionidentifier,TxID)與從所述索引葉頁記錄獲得的記錄提交TxID的比較,判斷所述記錄是否可見。根據(jù)一方面,一種用于管理數(shù)據(jù)庫的裝置,包括:處理器以及判斷構(gòu)件,其中,所述判斷構(gòu)件用于:根據(jù)記錄對應(yīng)的索引葉頁記錄中的刪除指示,判斷所述記錄是否已刪除;當(dāng)所述記錄未刪除時(shí),根據(jù)所述索引葉頁記錄中的新記錄指示并根據(jù)事務(wù)開始點(diǎn)的系統(tǒng)提交事務(wù)標(biāo)識(transactionidentifier,TxID)與從所述索引葉頁記錄獲得的記錄創(chuàng)建TxID的比較,判斷所述記錄是否可見;所述處理器用于執(zhí)行所述判斷步驟的結(jié)果。根據(jù)所述用于管理數(shù)據(jù)庫的裝置的一種實(shí)施方式,所述判斷構(gòu)件還用于:比較刪除TxID和所述事務(wù)開始點(diǎn)的所述系統(tǒng)提交TxID,其中,當(dāng)所述刪除指示指示所述記錄被刪除且所述刪除TxID的結(jié)束時(shí)戳(endtimestamp,ETS)小于或等于所述事務(wù)開始點(diǎn)的所述系統(tǒng)提交TxID時(shí),所述記錄已刪除。根據(jù)所述用于管理數(shù)據(jù)庫的裝置的另一種實(shí)施方式,所述判斷構(gòu)件進(jìn)一步還用于:當(dāng)所述刪除TxID提交且所述刪除TxID的所述ETS小于所述事務(wù)開始點(diǎn)的當(dāng)前日志序列號(logsequencenumber,LSN)時(shí),判斷所述記錄已刪除。根據(jù)一實(shí)施例,一種數(shù)據(jù)處理系統(tǒng)中用于對數(shù)據(jù)庫(database,DB)管理系統(tǒng)中的索引的多版本并發(fā)控制(multi-versionconcurrencycontrol,MVCC)支持的方法,包括:從用戶接收對第一數(shù)據(jù)記錄的請求,其中,所述請求包括事務(wù);檢索所述第一數(shù)據(jù)記錄對應(yīng)的第一索引葉頁記錄,其中,所述第一索引葉頁記錄包括刪除標(biāo)志、新記錄標(biāo)志以及記錄標(biāo)識(recordidentifier,RID);根據(jù)所述刪除標(biāo)志和所述新記錄標(biāo)志,判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見;當(dāng)所述第一數(shù)據(jù)記錄可見時(shí),向所述用戶提供所述第一數(shù)據(jù)記錄,其中,當(dāng)所述事務(wù)的事務(wù)標(biāo)識(transactionidentifier,TxID)的提交狀態(tài)已知時(shí),在不查閱事務(wù)表的情況下,執(zhí)行所述判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見。根據(jù)一實(shí)施例,一種用于對數(shù)據(jù)庫(database,DB)管理系統(tǒng)中的索引的多版本并發(fā)控制(multi-versionconcurrencycontrol,MVCC)支持的數(shù)據(jù)處理系統(tǒng),包括:處理器;計(jì)算機(jī)可讀存儲介質(zhì),用于存儲所述處理器的執(zhí)行程序,所述程序包括指令以:從用戶接收對第一數(shù)據(jù)記錄的請求,其中,所述請求包括事務(wù);檢索所述第一數(shù)據(jù)記錄對應(yīng)的第一索引葉頁記錄,其中,所述第一索引葉頁記錄包括刪除標(biāo)志、新記錄標(biāo)志以及記錄標(biāo)識(recordidentifier,RID);根據(jù)所述刪除標(biāo)志和所述新記錄標(biāo)志,判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見;當(dāng)所述第一數(shù)據(jù)記錄可見時(shí),向所述用戶提供所述第一數(shù)據(jù)記錄,其中,當(dāng)所述事務(wù)的事務(wù)標(biāo)識(transactionidentifier,TxID)的提交狀態(tài)已知時(shí),在不查閱事務(wù)表的情況下,執(zhí)行所述用于判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見的指令。根據(jù)一方面,一種用于管理數(shù)據(jù)處理系統(tǒng)的裝置,包括:接收構(gòu)件,用于從用戶接收對第一數(shù)據(jù)記錄的請求,其中,所述請求包括事務(wù);檢索構(gòu)件,用于檢索所述第一數(shù)據(jù)記錄對應(yīng)的第一索引葉頁記錄,其中,所述第一索引葉頁記錄包括刪除標(biāo)志、新記錄標(biāo)志以及記錄標(biāo)識(recordidentifier,RID);判斷構(gòu)件,用于根據(jù)所述刪除標(biāo)志和所述新記錄標(biāo)志,判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見;提供構(gòu)件,用于當(dāng)所述第一數(shù)據(jù)記錄可見時(shí),向所述用戶提供所述第一數(shù)據(jù)記錄,其中,所述判斷構(gòu)件還用于:當(dāng)所述事務(wù)的事務(wù)標(biāo)識(transactionidentifier,TxID)的提交狀態(tài)已知時(shí),在不查閱事務(wù)表的情況下,判斷所述第一數(shù)據(jù)記錄是否已刪除及可見或不可見。根據(jù)所述方面的一種實(shí)施方式,所述用于管理數(shù)據(jù)處理系統(tǒng)的裝置還包括追蹤構(gòu)件,用于在所述事務(wù)表中持續(xù)追蹤所述DB管理系統(tǒng)中的多個(gè)事務(wù)的狀態(tài),其中,所述事務(wù)表根據(jù)隨時(shí)間單調(diào)遞增的TxID進(jìn)行索引化。根據(jù)上述方面的任意實(shí)施形式中的另一種實(shí)施方式,所述用于管理數(shù)據(jù)處理系統(tǒng)的裝置還包括:存儲構(gòu)件,用于在索引子系統(tǒng)中存儲索引記錄的多個(gè)版本,其中,每個(gè)版本的索引記錄包括鍵到記錄標(biāo)識(recordidentifier,RID)映射,每個(gè)未壓縮記錄包括創(chuàng)建或刪除所述索引記錄的事務(wù)的TxID。MVCC是DBMS引擎中的基礎(chǔ)技術(shù)。大量需求簡單有效的算法。通過應(yīng)用上述方案,簡化了針對數(shù)據(jù)庫管理的MVCC的實(shí)施。該系統(tǒng)可能具有較低的復(fù)雜性,可能更為耐用且可見性檢測仍舊有效。附圖說明為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)在參考下文結(jié)合附圖進(jìn)行的描述,其中:圖1為示出了基于記錄的MVCC的實(shí)施例架構(gòu)的方框圖;圖2為示出了維持索引葉頁中記錄的實(shí)施例系統(tǒng)的圖;圖3為示出了進(jìn)行快照一致性讀取的示例性方法的流程圖;圖4示出了本實(shí)施例提供的計(jì)算平臺,可用于實(shí)現(xiàn)例如本發(fā)明所描述的設(shè)備和方法。具體實(shí)施方式下文將詳細(xì)論述當(dāng)前優(yōu)選實(shí)施例的制作和使用。但應(yīng)了解,本發(fā)明提供的許多適用發(fā)明概念可實(shí)施在多種具體環(huán)境中。所論述的具體實(shí)施例僅僅說明用以實(shí)施和使用本發(fā)明的具體方式,而不限制本發(fā)明的范圍。本發(fā)明公開了數(shù)據(jù)庫(database,DB)管理系統(tǒng)和方法,大大優(yōu)化了DB管理的索引的多版本支持。在一實(shí)施例中,一個(gè)關(guān)注點(diǎn)在于對標(biāo)準(zhǔn)B樹的擴(kuò)展,以在無需對索引記錄的歷史版本進(jìn)行回滾的情況下通過基于記錄的方法支持多版本。B樹支持三種主要操作:插入(鍵,記錄標(biāo)識(recordidentifier,RID)),刪除(鍵,RID),以及鑒于鍵范圍進(jìn)行查找。對于多版本并發(fā)控制(multi-versionconcurrencycontrol,MVCC)支持,擴(kuò)展這些操作是為了支持版本信息(通常是日志序列號(logsequencenumber,LSN))。圖1為示出了基于記錄的MVCC的實(shí)施例架構(gòu)100的方框圖。在一實(shí)施例中,所述架構(gòu)100與基于記錄的MVCC的那些架構(gòu)相似,雖然本發(fā)明公開的索引MVCC的方法在很大程度上是獨(dú)立于數(shù)據(jù)頁MVCC的。本發(fā)明的一個(gè)關(guān)注點(diǎn)是索引B樹的葉頁。所述架構(gòu)100包括數(shù)據(jù)頁120、事務(wù)表102、日志132、撤銷/版本存儲126以及B樹索引子系統(tǒng)104。所述事務(wù)表102包括TxID、狀態(tài)、開始時(shí)戳(starttimestamp,STS)、結(jié)束時(shí)戳(endtimestamp,ETS)以及多種記錄的撤銷的表項(xiàng)。所述狀態(tài)可以是已提交(committed,C)、已中止(aborted,A),以及飛行中(inflight,I)。所述事務(wù)表102中的撤銷表項(xiàng)指示版本存儲記錄ID為當(dāng)前事務(wù)的撤銷記錄鏈的開始撤銷點(diǎn)。所述日志132既包括常規(guī)表空間(tablespace,TS)和版本TS,也包括已提交的記錄、(系統(tǒng))提交LSN以及記錄的當(dāng)前LSN。所述撤銷/版本存儲126包括記錄版本以及每個(gè)事務(wù)的撤銷鏈(未示出)的鏈路128和130。因此,版本2(v2)的鏈路指向版本1(v1)的鏈路,版本2和版本1作為所述記錄的版本。所述數(shù)據(jù)頁120包括當(dāng)前版本記錄122和已刪除記錄124。在一實(shí)施例中,B樹索引子系統(tǒng)104包括B樹1106和B樹2108。B樹106和B樹108分別包括相應(yīng)的葉頁110和112。葉頁110和葉頁112分別包括指向所述數(shù)據(jù)頁120中的刪除版本記錄124的指針114和指向所述數(shù)據(jù)頁120中的當(dāng)前版本記錄3122的指針116。在一實(shí)施例中,B樹葉頁(或其他索引結(jié)構(gòu))中的記錄會保留記錄的創(chuàng)建和刪除的事務(wù)信息,使得在無需查看數(shù)據(jù)記錄的情況下能夠?qū)崿F(xiàn)一致性讀取。老版本不需要移至單獨(dú)的存儲空間。可以清除(若刪除)或壓縮較老的記錄以改善空間和時(shí)間效率。在一實(shí)施例中,通過Commit_TxID或Commit_LSN可以優(yōu)化這些記錄。在一實(shí)施例中,通過根據(jù)創(chuàng)建或刪除記錄的事務(wù)的信息拓展葉頁記錄取得對B樹索引的多版本支持。該系統(tǒng)持續(xù)追蹤事務(wù)表中的所有事務(wù)狀態(tài),并將變化記錄在日志中。日志(記錄)序列號(logsequencenumber,LSN)用于識別頁和記錄的狀態(tài)。當(dāng)事務(wù)開始時(shí),所述事務(wù)分配了事務(wù)ID和開始時(shí)戳(即LSN)。所述事務(wù)做出的所有變化暫時(shí)可以由事務(wù)ID(或TxID)標(biāo)記。當(dāng)所述事務(wù)提交時(shí),該事務(wù)具有提交LSN。一致性讀取基于所述提交LSN以取得快照一致性,即讀取器將只讀取在該讀取器開始的時(shí)間提交的記錄。換言之,若記錄未刪除且其事務(wù)的提交LSN小于所述讀取器的LSN,則該記錄對讀取器可見。存在兩種比較LSN的方法。一種方法為:當(dāng)事務(wù)提交時(shí)或提交后,在記錄中用LSN替換TxID。另一種方法為:在事務(wù)表中查找TxID以找到事務(wù)狀態(tài)和其提交LSN進(jìn)行比較??梢酝ㄟ^應(yīng)用系統(tǒng)范圍Commit_LSN或Commit_TxID優(yōu)化這兩種方法。Commit_LSN定義為最大LSN,使得已經(jīng)提交了該LSN之前的所有日志記錄。同理,Commit_TxID是最大的事務(wù)ID,使得已經(jīng)提交了該TxID之前的所有事務(wù),該TxID之前的回滾(即已中止)事務(wù)的所有記錄在物理上被撤銷。因此,在一實(shí)施例中,支持和優(yōu)化索引MVCC的主要技術(shù)為:根據(jù)事務(wù)信息增加葉頁記錄。不需要針對索引記錄的獨(dú)立版本存儲。創(chuàng)建事務(wù)ID或提交LSN可以從記錄中移除,并由1位替代,以指示該記錄是老記錄,且比系統(tǒng)范圍Commit_TxID或Commit_LSN(比最老讀取器LSN老)老。若已刪除記錄的刪除LSN或TxID比系統(tǒng)范圍Commit_TxID或Commit_LSN老,該已刪除記錄可以清除。動(dòng)作2和3稱為壓縮,且可以在尋找空間期間的頁拆分之前執(zhí)行。在壓縮之后,該版本信息變?yōu)?位,且由于大部分記錄將會壓縮,這會使索引多版本支持比其他方法在空間要求方面成本更低。在查找操作中,通過將Commit_TxID或Commit_LSN與記錄中的事務(wù)ID或提交LSN進(jìn)行比較,以及在事務(wù)表102中僅查詢較新記錄,可以大大優(yōu)化記錄可見性的檢測,其中,較新的記錄通常在全部記錄中只占極低的百分比。圖2為示出了維持索引葉頁中記錄的實(shí)施例系統(tǒng)200的圖。唯一索引204和非唯一索引206的記錄是不同的。對于唯一索引204,一個(gè)鍵值只能有一個(gè)數(shù)據(jù)記錄,而對于非唯一索引206,鍵值可以出現(xiàn)在多個(gè)數(shù)據(jù)記錄中。通過TxID(創(chuàng)建TxID,簡稱CTxID,或刪除TxID,簡稱DTxID)說明該記錄。所述TxID可為提交LSN(CLSN,或CTS即創(chuàng)建時(shí)戳,或DTS即刪除時(shí)戳)。相同的字段可以是TxID或LSN/TS,因?yàn)轱w行狀態(tài)的事務(wù)不具有提交LSN,因此,作為替代,其采用TxID。TxID用作示例進(jìn)行說明,且優(yōu)化基于Commit_TxID。該方法避免將提交LSN回填入記錄以替代TxID。記錄間的聯(lián)系沒有明顯示出,因?yàn)?,例如每個(gè)記錄或RID可能存在下一個(gè)指針,或記錄間的聯(lián)系可以組成關(guān)系數(shù)組。在一實(shí)施例中,每個(gè)版本的索引記錄包括鍵到記錄標(biāo)識(recordidentifier,RID)映射,其中,每個(gè)未壓縮記錄包括創(chuàng)建了或刪除了該索引記錄的事務(wù)的TxID。標(biāo)志202與標(biāo)志字段中的每個(gè)記錄相關(guān)聯(lián)。在一實(shí)施例中,該標(biāo)志是刪除標(biāo)志(Del_Flag)和新標(biāo)志(New_Flag),其分別可以為0或1,其中,所述刪除標(biāo)志指示該記錄是正常記錄還是已刪除記錄,所述新標(biāo)志指示該記錄是新記錄還是老記錄。例如,刪除標(biāo)志的值為0時(shí)指示正常記錄,刪除標(biāo)志的值為1時(shí)指示已刪除記錄。在一實(shí)施例中,已刪除記錄一直包含DTxID。在一實(shí)施例中,等于0的新標(biāo)志指示不存在創(chuàng)建TxID(其小于Commit_TxID(壓縮的)),因此不是新記錄,而等于1的新標(biāo)志指示該記錄是新記錄而該記錄包含創(chuàng)建TxID。在一實(shí)施例中,每個(gè)標(biāo)志202是1位標(biāo)志,例如1位刪除標(biāo)志和1位新標(biāo)志(或1位新記錄標(biāo)識)。標(biāo)志的使用消除了在某些情況下在記錄中查找某些TxID的需要,從而提高數(shù)據(jù)庫的速度和性能,以下結(jié)合圖3示出。數(shù)據(jù)和索引更新操作插入:當(dāng)插入記錄時(shí),記錄被插入數(shù)據(jù)頁。然后,查找右葉頁時(shí)發(fā)生正常B樹遍歷,以插入其鍵(鍵,TxID,RID)。多版本B樹索引和標(biāo)準(zhǔn)B樹的僅有區(qū)別是:葉頁記錄包含CTxID,在頁拆分之前,可應(yīng)用壓縮以看看該頁面中是否存在足夠的空間。壓縮是移除已刪除記錄中具有的DTxID比系統(tǒng)Commit_TxID(或oldest_reader_LSN,若其與更新事務(wù)是分開保留的)小的已刪除記錄,同時(shí),移除CTxID字段并清理新標(biāo)志位以指示索引記錄已提交,且所有活動(dòng)事務(wù)可見。若在壓縮之后,存在足夠的可用空間以避免頁拆分,則將索引記錄正常插入。否則,在相同的頁拆分過程之后,結(jié)束插入。刪除:當(dāng)記錄被刪除時(shí),在葉頁中查找相應(yīng)記錄時(shí)發(fā)生正常B樹遍歷。該記錄可包含CTxID,也可以已經(jīng)被壓縮為不包含CTxID。若其包含CTxID,檢測其是否能被壓縮,因此,通過設(shè)置要求的位:即Del_flag=1以及New_flag=0,該字段能用于DTxID。若其不能包含或其不包含CTxID,則需增加新字段DTxID。(若空間不足,這可能會造成頁壓縮或頁拆分,其可通過頁面上保留的空間加以避免。)更新:當(dāng)更新數(shù)據(jù)記錄時(shí),存在兩種情況:(1)鍵字段不變。此時(shí),需要不對索引做改變;(2)鍵字段改變。其變?yōu)閯h除,然后進(jìn)行索引的插入。圖3為示出了進(jìn)行快照一致性讀取的示例性方法300的流程圖。所述方法300從步驟3步驟02開始,判斷刪除標(biāo)志是否等于1。若刪除標(biāo)志等于1,則所述方法300轉(zhuǎn)到步驟304,判斷刪除TxID是否小于或等于事務(wù)開始點(diǎn)的系統(tǒng)提交TxID(myCommit_TxID),或者當(dāng)前事務(wù)本身是否是進(jìn)行刪除的事務(wù)。若在步驟304中刪除TxID小于或等于提交TxID,則所述方法300轉(zhuǎn)到步驟314,確定記錄已刪除,隨后,所述方法300結(jié)束。若在步驟304中刪除TxID大于提交TxID,則所述方法300轉(zhuǎn)到步驟306,檢測事務(wù)表,看看刪除TxID是否提交,刪除TxID的ETS小于事務(wù)開始點(diǎn)的當(dāng)前日志序列號(logsequencenumber,LSN)(即myLSN)。若在步驟306中提交了刪除TxID且刪除TxID的ETS小于myLSN,則所述方法300轉(zhuǎn)到步驟314,確定記錄已刪除,隨后,所述方法300結(jié)束。若在步驟302中刪除日志不等于1,或者,若在步驟306中,刪除TxID未被提交或刪除TxID的ETS不小于事務(wù)開始點(diǎn)的當(dāng)前日志序列號(即myLSN),則所述方法300轉(zhuǎn)到步驟308,判斷新標(biāo)志是否等于1。若在步驟308中新標(biāo)志不等于1,則所述方法300轉(zhuǎn)到步驟316,確定記錄可見,隨后,所述方法300結(jié)束。若在步驟308中新標(biāo)志等于1,則所述方法300轉(zhuǎn)到步驟310,判斷創(chuàng)建TxID(createTxID,CTxID)小于或等于事務(wù)開始點(diǎn)的當(dāng)前提交TxID(myCommit_TxID)。若在步驟310中創(chuàng)建TxID(createTxID,CTxID)小于或等于myCommit_TxID,或者,當(dāng)前事務(wù)本身是進(jìn)行插入的事務(wù),則所述方法300轉(zhuǎn)到步驟316,確定記錄可見,隨后,所述方法300結(jié)束。若在步驟310中創(chuàng)建TxID(createTxID,CTxID)大于myCommit_TxID,則所述方法300轉(zhuǎn)到步驟312,檢測事務(wù)表,看看創(chuàng)建事務(wù)TxID(CTxID)是否被提交,ETS(CTxID)小于事務(wù)開始點(diǎn)的當(dāng)前日志序列號(logsequencenumber,LSN)(即myLSN)。若在步驟312中創(chuàng)建事務(wù)TxID(CTxID)被提交,且ETS(CTxID)小于事務(wù)開始點(diǎn)的當(dāng)前日志序列號(logsequencenumber,LSN)(即myLSN),則所述方法300轉(zhuǎn)到步驟316,確定記錄可見,隨后,所述方法300結(jié)束。若在步驟312中確定創(chuàng)建事務(wù)TxID(CTxID)未提交,且ETS(CTxID)不小于事務(wù)開始點(diǎn)的當(dāng)前日志序列號(logsequencenumber,LSN)(即myLSN),則所述方法300轉(zhuǎn)到步驟318,確定記錄不可見,隨后,所述方法300結(jié)束。因此,對于快照一致性讀取,在讀取器開始時(shí),為讀取器保留當(dāng)前Commit_TxID、當(dāng)前LSN,以及TxID的副本,此處分別稱之為myCommit_TxID、myLSN以及myTxID。這可能與數(shù)據(jù)頁的快照一致性讀取一樣。對于索引葉頁讀取,一個(gè)區(qū)別在于每個(gè)RID記錄的可見性檢測,如前述流程圖所述。該邏輯應(yīng)用于(非唯一索引中的)每個(gè)記錄或RID記錄。一旦從索引查找中返回了RID或RID列表,若將要獲取相應(yīng)的數(shù)據(jù)記錄或記錄,之后應(yīng)是數(shù)據(jù)頁記錄讀取過程以找到正確的記錄,因?yàn)橹挥挟?dāng)有效記錄是在歷史版本鏈中時(shí),索引鍵才可能會指向最新記錄版本。圖4為可用于實(shí)現(xiàn)本發(fā)明所述的設(shè)備和方法的處理系統(tǒng)400的方框圖。特定設(shè)備可利用所有所示的組件或所述組件的僅一子集,且設(shè)備之間的集成程度可能不同。此外,設(shè)備可以包含組件的多個(gè)實(shí)例,例如多個(gè)處理單元、處理器、存儲器、發(fā)射器以及接收器等。該處理系統(tǒng)400可包括處理單元401,其中,該處理單元配備有一個(gè)或多個(gè)輸入/輸出設(shè)備,例如,揚(yáng)聲器、麥克風(fēng)、鼠標(biāo)、觸摸屏、小鍵盤、鍵盤、打印機(jī)以及顯示器等。該處理單元401可以包括連接至總線440的中央處理器(centralprocessingunit,CPU)410、存儲器420、大容量存儲設(shè)備430、網(wǎng)絡(luò)接口450、I/O接口460以及天線電路470。該處理單元401也包括連接至該天線電路的天線振子475。所述總線440可以為包括存儲器總線或內(nèi)存控制器、外圍總線、視頻總線等幾種任意類型的總線架構(gòu)中的一個(gè)或多個(gè)。該CPU410可以包括任意類型的電子數(shù)據(jù)處理器。該存儲器420可以包括任意類型系統(tǒng)存儲器,比如,靜態(tài)隨機(jī)存取存儲器(staticrandomaccessmemory,SRAM)、動(dòng)態(tài)隨機(jī)存取存儲器(dynamicrandomaccessmemory,DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲器(synchronousDRAM,SDRAM)、只讀存儲器(read-onlymemory,ROM)或者它們的組合等。在一實(shí)施例中,存儲器420可以包括啟動(dòng)時(shí)使用的ROM和執(zhí)行程序時(shí)使用的用于存儲程序和數(shù)據(jù)的DRAM。該大容量存儲設(shè)備430可以包括用于存儲數(shù)據(jù)、程序以及其他信息且使得該數(shù)據(jù)、程序以及其他信息通過該總線440可訪問的任意類型的存儲設(shè)備。例如,該大容量存儲設(shè)備430可以包括:固態(tài)驅(qū)動(dòng)器、硬盤驅(qū)動(dòng)器、磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器等中的一個(gè)或多個(gè)。該I/O接口460可以提供接口,以將外部輸入輸出設(shè)備耦合至該處理單元401。該I/O接口460可以包括視頻適配器。輸入輸出設(shè)備的示例可以包括耦合至該視頻適配器的顯示器和耦合至該I/O接口的鼠標(biāo)/鍵盤/打印機(jī)。其他設(shè)備可以耦合至該處理單元401,且可以采用額外的或較少的接口卡。例如,串行接口例如通用串行總線(UniversalSerialBus,USB)(未示出)可以用于為打印機(jī)提供接口。該天線電路470和天線振子475可以允許該處理單元401通過網(wǎng)絡(luò)與遠(yuǎn)程單元通信。在一實(shí)施例中,該天線電路470和天線振子475接入長期演進(jìn)(LongTermEvolution,LTE)、碼分多址(CodeDivisionMultipleAccess,CDMA)、寬帶碼分多址(WidebandCDMA,WCDMA)、全球移動(dòng)通信系統(tǒng)(GlobalSystemforMobileCommunications,GSM)網(wǎng)絡(luò)等蜂窩網(wǎng)絡(luò)和/或無線廣域網(wǎng)(wirelesswideareanetwork,WAN)。在一些實(shí)施例中,該天線電路470和天線振子475也可以向其他設(shè)備提供藍(lán)牙和/或Wi-Fi接入。該處理單元401也可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口450,該網(wǎng)絡(luò)接口可以包括有線鏈路例如以太網(wǎng)線等,和/或無線鏈路以接入節(jié)點(diǎn)或不同網(wǎng)絡(luò)。該網(wǎng)絡(luò)接口450允許該處理單元401通過網(wǎng)絡(luò)480與遠(yuǎn)程單元通信。例如,該網(wǎng)絡(luò)接口450可以通過一個(gè)或多個(gè)發(fā)射器/發(fā)射天線和一個(gè)或多個(gè)接收器/接收天線提供無線通信。在一實(shí)施例中,該處理單元401耦合至局域網(wǎng)或廣域網(wǎng)以進(jìn)行數(shù)據(jù)處理并與其他處理單元、互聯(lián)網(wǎng)以及遠(yuǎn)端存儲設(shè)施等遠(yuǎn)端設(shè)備通信。盡管進(jìn)行了詳細(xì)的描述,但應(yīng)理解,可在不脫離由所附權(quán)利要求書界定的本發(fā)明的精神和范圍的情況下,對本文做出各種改變、替代和更改。此外,本發(fā)明的范圍不希望限于本文中所描述的特定實(shí)施例,所屬領(lǐng)域的一般技術(shù)人員將從本發(fā)明中容易了解到,過程、機(jī)器、制造工藝、物質(zhì)成分、構(gòu)件、方法或步驟(包括目前存在的或以后將開發(fā)的)可執(zhí)行與本文所述對應(yīng)實(shí)施例大致相同的功能或?qū)崿F(xiàn)與本文所述對應(yīng)實(shí)施例大致相同的效果。相應(yīng)地,所附權(quán)利要求范圍包括這些流程、機(jī)器、制造、物質(zhì)組分、構(gòu)件、方法,及步驟。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3