資料庫可重複讀實現方法、裝置及資料庫管理系統的製作方法
2023-10-05 16:23:09 1
專利名稱:資料庫可重複讀實現方法、裝置及資料庫管理系統的製作方法
技術領域:
本發明涉及資料庫管理系統(DBMS),尤其涉及事務隔離級別,特別是 多事務並發執行時數據可重複讀的實現方法、裝置及應用其的資料庫管理系 統。
背景技術:
資料庫管理系統中事務必須確保四種屬性原子性,即事務中所有動作或 者全部執行或者全不執行; 一致性,即每個事務必須保持資料庫的一致性;隔 離性,即每個事務的執行不受正在執行的其它事務的影響;持久性,即事務一 旦提交成功,所有對資料庫的改變應能持久保存在存儲介質上。設有事務T1、 T2,並發執行時可能存在三種衝突WR衝突,即T2可能 會讀Tl剛修改過且未提交的數據,這樣T2讀入的數據是髒數據,稱作"髒 讀";RW衝突,即T2可能會修改剛被T1讀入的數據且T1尚未結束,這樣 如果T1再次讀入同一對象,會有不同的值,也稱"不可重複讀";WW衝突, 即T2可能會覆寫剛被T1修改過的值且T1尚未結束,這樣會導致數據的不一 致性。串行調度可以保證數據的一致性,但不利於系統性能,因此SQL (Structured Query Language,結構化查詢語言)標準中定義了四種隔離級別 可串行化讀,這種隔離級別保證事務T只讀其它已提交事務的修改,在T提 交之前,其它事務不得修改已被T讀或修改的對象,並且,如果T基於某些 搜索條件讀一組對象,在T完成之前,其它事務不得修改該組對象;可重複讀, 這種隔離級別保證事務T只讀其它已提交事務的修改,在T提交之前,其它 事務不得修改已被T讀或修改的對象;提交讀,這種隔離級別保證事務T只 讀其它已提交事務的修改,在T提交之前,其它事務不得修改已被T修改的 對象;未提交讀,這種隔離級別保證事務T只讀其它已提交事務的修改。中國專利申請號為200310124201的對比文件公開了一種在資料庫裡快速 定位數據頁中記錄的方法,包括在數據頁的末端設置一個目錄結構,該目錄
結構由一組記錄偏移構成,記錄偏移是某條記錄在頁裡的位置偏移;該目錄結構中的每個目錄稱之為d i r—s 1 o t,每個d i r—s 1 o t存放一個記錄位置的偏移;採用快速二分法定位算法在d i r— S 1 O t中查找相關記錄,在定位到某個d i r_s 1 o t後,根據該d i r—s 1 o t中存放的記 錄偏移,順序查找這相關的這一組記錄,準確地定位到要找的那條記錄。該方 法採用査詢過程和本專利中查詢過程類似,都需要從索引根節點開始,採用二 分査找定位到記錄組,再遍歷記錄組,找到滿足條件的記錄,取得子節點,如 此重複重複直至到達葉子節點。但是,該專利中實現的隔離級別是可串行化讀, 如果事務讀到某條記錄時,其它事務正在修改,則需要等待其它事務提交完成。
國際公開號為WO2004/025519 A2的對比文件也公開了一種相關方法,如 果當前記錄的事務ID大於讀視圖中最大事務ID,說明記錄是後來插入的,所 以該記錄不可見,如果當前記錄的事務ID小於讀視圖中最小事務ID或介於事 務列表中任意相鄰兩個事務ID之間,說明修改該記錄的事務已提交,所以該 記錄可見,這與本發明是--致的;但是遇到未提交事務修改的記錄,該發明僅 將其標記為不可見而丟棄,本發明則是從記錄中取出回滾指針,解碼回滾指針 獲得撤銷日誌的地址,從而由撤銷日誌構造出一條讀視圖看得見的記錄。
總之,目前的資料庫管理系統都允許多用戶、多事務並發執行,因此不可 避免會遇到上述三種衝突。解決衝突最簡單的方法是採用鎖機制,讀或寫之前 先對表加意向共享鎖或意向排它鎖、對記錄加共享鎖或排它鎖,但這樣損害了 事務的並發性,犧牲了系統性能。
發明內容
本發明所要解決的技術問題在於,提供一種高效率的資料庫可重複讀的實 現方法、裝置及應用其的資料庫管理系統,可以增大事務並發性,提高系統性 能。
為了實現上述目的,本發明提供了一種資料庫可重複讀實現方法,用於一 種多用戶、多事務並發的資料庫管理系統,所述系統維護一事務列表、 一回滾 段及一索引樹,該方法包括步驟一,在遍歷所述系統維護的事務列表時利用索引快速定位到滿足條件 的頁,其中,所述事務列表,用於保存當前正在並發執行且未提交的事務;
步驟二,遍歷頁記錄時檢查當前事務是否看得見當前記錄,如果看得見, 則將當前記錄加入到結果集中,如果看不見則利用所述系統維護的回滾段中的 撤銷日誌,構造出該記錄的原始版本並添加到結果集中,其中所述回滾段用於 記錄事務所做的修改。上述資料庫可重複讀實現方法,所述系統維護一個回滾段的步驟,進一步 包括步驟11,所述系統在磁碟上生成回滾段日誌文件,同時在高速緩存中保 存相應頁,並使每次插入一撤銷日誌僅針對所述高速緩存中的頁; 步驟12,定期清理所述高速緩存中舊的撤銷日誌; 步驟13,定期將所述高速緩存中的頁存在到磁碟文件中。 上述資料庫可重複讀實現方法,所述回滾段的內存結構信息包括回滾段 ID、表空間ID、頁號。上述資料庫可重複讀實現方法,所述系統每次啟動一個事務,將該事務信 息插入到所述事務列表中;每次事務提交或回滾,將該事務從所述事務列表中刪除,以實現所述事務列表中只保存未提交事務。上述資料庫可重複讀實現方法,所述事務信息包括事務ID、事務類型、 指向事務列表中前後節點的指針、撤銷號、分配給事務的回滾段、插入撤銷指 針、更新撤銷指針、讀視圖指針。上述資料庫可重複讀實現方法,所述檢查當前事務是否看得見當前記錄 時,需要在查詢節點中保存讀視圖結構,該讀視圖結構保存當前事務執行時系統中並發執行的其它事務ID、最大事務ID和最小事務ID,同時保存所述撤銷 日誌清理相關信息,如果修改記錄的事務ID小於所述事務列表看中的最小事 務ID,則當前事務看得見當前記錄;如果修改記錄的事務ID大於事務列表中 的最大事務ID,則當前事務看不見當前記錄;如果修改記錄的事務ID等於事 務列表中任一事務ID,則當前事務看不見當前記錄。上述資料庫可重複讀實現方法,所述系統維護一索引樹的步驟,進一步包括步驟21,接收到査詢請求後,從索引樹的根節點開始沿著索引樹定位到 頁節點;步驟22,定位到頁節點後開始構造結果集; 步驟23,遍歷頁中所有記錄,檢查當前事務中的事務ID,遍歷所述讀視圖 中的事務列表,查看所述讀視圖是否看得見當前記錄,如看得見,則將當前記 錄加入到結果集中,如看不見,則從記錄中取出回滾指針,從所述回滾指針中 解碼出所述撤銷日誌在所述回滾段中的位置,然後從該回滾段中取出相關數據構造出前一次版本,並添加到結果集中;步驟24,獲取到所述前一個版本,檢查所述讀視圖是否看的見該版本記 錄,如果看不見,再構造更前一次的版本,如此重複,直至所述讀視圖看得見 某版本記錄為止,將該版本記錄加入到所述結果集中;步驟25,檢查是否有下一條記錄,如果有,重複執行步驟23 24,直至遍 歷完數據頁鍊表,如果沒有,本次査詢結束。上述資料庫可重複讀實現方法,所述步驟21進一歩包括步驟211,檢査所述根節點是否在高速緩存中,如在,執行步驟212;如 不在,將所述根節點換入所述高速緩存中,執行步驟212;步驟212,檢查當前節點是否是葉子節點,如不是,採用二分查找定位到 滿足查詢條件的索引項;步驟213,沿著所述索引項中指針定位到子節點,循環執行歩驟212直至 定位到所述頁節點。上述資料庫可重複讀實現方法,所述記錄中包含回滾指針,該回滾指針中 編碼了回滾ID、回滾段表空間ID、頁號、頁內偏移、回滾類型。上述資料庫可重複讀實現方法,在所述歩驟ll中,所述日誌文件分為若 幹大小相等的頁,所述頁中存儲所述撤銷日誌,所述撤銷日誌中包含撤銷類 型、撤銷號、表ID、各欄位值,任何插入、修改、刪除操作均生成一條撤銷 曰志。進一步的,本發明還提供了一種應用上述資料庫可重複i賣實現方法的實現 裝置,用於一種多用戶、多事務並發的資料庫管理系統,所述裝置包括一事務列表維護模塊,用於維護一個事務列表,其中所述事務列表用於保 存當前正在並發執行且未提交的事務;一回滾段維護模塊,用於維護一個回滾段,其中所述回滾段用於記錄事務 所做的修改;一索引樹維護模塊,用於在執行查詢操作時,遍歷所述事務列表利用索引 快速定位到滿足條件的頁,遍歷頁記錄時檢査當前事務是否看得見當前記錄, 如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述回滾段中 的撤銷日誌,構造出該記錄的原始版本並添加到結果集中。更進一步的,本發明還提供了一種應用上述方法和裝置的資料庫管理系 統,包括一資料庫可重複讀實現裝置,該裝置包括一事務列表維護模塊,用於維護一個事務列表,其中所述事務列表用於保 存當前正在並發執行且未提交的事務;一回滾段維護模塊,用於維護一個回滾段,其中所述回滾段用於記錄事務 所做的修改;一索引樹維護模塊,用於在執行査詢操作時,遍歷所述事務列表利用索引 快速定位到滿足條件的頁,遍歷頁記錄時檢査當前事務是否看得見當前記錄, 如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述回滾段中 的撤銷日誌,構造出該記錄的原始版本並添加到結果集中。與現有技術相比,本發明提供的資料庫可重複讀實現方法,資料庫管理系 統對數據做修改會在回滾段中記錄撤銷日誌,以便系統"回滾"。為了實現可 重複讀,本發明也利用撤銷日誌保存了原始數據,如果當前讀視圖"看不見" 當前記錄時,則從撤銷日誌中構建原始版本添加到結果集中,保證了一個事務 査看相同的信息不會看到兩個不同的版本,即如果一個事務在某個時刻讀了一 條記錄,接下來自己如果沒有修改,再讀該記錄應該得到同樣的值,不管有沒 有其它事務修改過該記錄。因此,本發明的應用增大了事務並發性,有效的提高了系統性能。
圖1為本發明資料庫可重複讀的實現方法流程圖; 圖2為本發明的一實施例可重複讀查詢過程圖; 圖3為本發明的B-樹聚集索引結構圖; 圖4為本發明資料庫可重複讀實現裝置示意框圖。
具體實施方式
下面結合附圖和具體實施例詳細描述本發明,以更進一步了解本發明 之目的、方案及功效,但並非作為對本發明所附權利要求保護範圍的限制。參考圖l,詳細說明本發明資料庫可重複讀的實現方法,該方法用於一種多用戶、多事務並發的資料庫管理系統,其中,該系統維護一回滾段, 一索引樹, 一事務列表和一讀視圖結構。該資料庫可重複讀的實現方法包括步驟SIO,在遍歷所述系統維護的事務列表時利用索引快速定位到滿足條 件的頁,其中,所述事務列表,用於保存當前正在並發執行且未提交的事務;步驟S20,遍歷頁記錄時檢查當前事務是否看得見當前記錄,如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述系統維護的回滾段中的 撤銷日誌,構造出該記錄的原始版本並添加到結果集中,其中所述回滾段用於 記錄事務所做的修改。在所述系統維護一個回滾段的步驟中系統在磁碟上生成回滾段日誌文 件,同時在高速緩存中保存相應頁,並使每次插入一撤銷日誌僅針對所述高速 緩存中的頁;為保證系統故障重啟時,可以恢復到最新狀態,系統要定期清理所述高速緩存中舊的撤銷日誌,並定期將所述高速緩存中的頁存在到磁碟文件 中。所述回滾段對應磁碟上的一個日誌文件,文件劃分為若干大小相等的頁,頁中存儲撤銷日誌,撤銷日誌中包含了撤銷類型、撤銷號、表ID、各欄位值 等信息。任何插入、修改、刪除操作均生成一條撤銷日誌,同時將回滾段ID、頁號、頁內偏移等信息編碼成回滾指針,同時將回滾指針保存在記錄中。在所述系統維護一棵索引樹的步驟進一步包括步驟S201,系統接收到査詢請求後,從索引樹的根節點開始沿著索引樹 定位到頁節點;步驟S202,定位到頁節點後開始構造結果集;步驟S203,遍歷頁中所有記錄,檢査當前事務中的事務ID,遍歷讀視圖中 的事務列表,査看所述讀視圖是否看得見當前記錄,如看得見,則將當前記錄 加入到結果集中,如看不見,則從記錄中取出回滾指針,從回滾指針中解碼出 撤銷日誌在回滾段中的位置,然後從該回滾段中取出相關數據構造出前一次版 本,並添加到結果集中;步驟S204,獲取到所述前一個版本,檢査讀視圖是否看的見該版本記錄,
如果看不見,再構造更前一次的版本,如此重複,直至讀視圖看得見某版本記 錄為止,將該版本記錄加入到結果集中;步驟S205,檢査是否有下一條記錄,如果有,重複執行步驟S203 S204, 直至遍歷完數據頁鍊表,如果沒有,本次查詢結束。 上述步驟S201進一步包括歩驟S211,檢查所述根節點是否在高速緩存中,如在,執行步驟S212; 如不在,將所述根節點換入所述高速緩存中,執行步驟S212;步驟S212,檢查當前節點是否是葉子節點,如不是,採用二分查找定位 到滿足查詢條件的索引項;歩驟S213,沿著所述索引項中指針定位到子節點,循環執行步驟S212直 至定位到所述頁節點。在所述系統維護一個事務列表的步驟中,事務列表記錄當前事務執行時系 統中並發執行的其它事務,按照後來者插入到隊頭的原則插入,同時分配一個 讀視圖結構,該結構保存當前事務執行時系統中並發執行的其它事務的ID以 及最大事務ID、最小事務ID,同時保存撤銷日誌清理相關信息。系統每次啟 動一個事務,將事務插入到事務列表中;每次事務提交或回滾,都從事務列表 中刪除相應的事務,保證事務列表中只保存未提交事務。其中,事務信息包括 事務ID、事務類型、指向事務列表中前後節點的指針、撤銷號、分配給事務 的回滾段、插入(insert)撤銷指針、更新(update)撤銷指針、讀視圖指針 等。在上述步驟S202中,每次收到客戶端請求,生成一個事務,構造出結果 集,返回給客戶端。最後結束本次事務,釋放本次事務所分配的資源。在上述步驟S203中,檢查當前事務是否看得見當前記錄中,如果修改記 錄的事務ID小於事務列表中最小事務ID,則當前事務看得見當前記錄,因為 讀時修改記錄的事務已提交;如果修改記錄的事務ID大於事務列表中最大事 務ID,說明修改記錄的是某個後來發生的事務,所以當前事務不應該看得見 當前記錄;如果修改記錄的事務ID等於事務列表中任一事務ID,說明修改記 錄的是某個未提交事務,所以當前事務不應該看得見當前記錄。圖2為本發明的一實施例可重複讀査詢過程圖,這裡描述了其中可能的一 種情況,即用戶沒有建普通索引。下面介紹其流程
步驟S301,監聽線程接收査詢請求,並分配一工作線程處理査詢請求。步驟S302,工作線程執行查詢分析和査詢優化,生成執行計劃。步驟S303,工作線程取出査詢所用的聚集索引,首先定位到聚集索引的 根節點,檢査根節點是否在高速緩存中,如果不在則將其換入。步驟S304,工作線程檢查當前節點是否是葉子節點,如果不是,則採用 二分查找,定位出滿足條件的記錄組,然後在記錄組中遍歷記錄,取得滿足條 件的記錄,然後取出子節點,如此重複,直至定位到頁節點;如果是葉節點, 則從步驟S305繼續執行。步驟S305,工作線程取出當前頁的下一條記錄(如果是第一次訪問本頁, 則定位到首記錄),並檢査讀視圖是否看得見當前記錄,如果看得見,則將記 錄加入到結果集中。如果看不見,則從當前記錄中取出回滾指針,從回滾指針 解碼出撤銷日誌的地址,然後讀出撤銷日誌,並從撤銷日誌構造出前一次版本, 再檢查讀視圖是否看得見該版本記錄,如此重複,直至讀視圖看得見某個版本 的記錄。檢查是否有下一條記錄(如果本頁記錄已遍歷完,則取下一頁),如 果有,則重複步驟S305,直至遍歷完所有記錄;如果沒有,執行步驟S306。步驟S306,本次査詢結束,返回結果集。圖3為B-樹聚集索引結構示意圖,索引由頁節點構造成樹,頁節點分為 索引頁和數據頁。索引頁中存放數據項,數據項由索引鍵和指向子節點的指針 組成,每若干條索引項構成一組,便於快速査找,數據頁中存放實際的數據, 數據按照索引鍵有序存放,記錄中包含每個欄位的偏移、標記信息(欄位偏移 是一字節還是二字節、記錄是否被刪除、記錄欄位數、下一記錄偏移等)、字 段值。參考圖4,本發明還提供了一種應用上述資料庫可重複讀實現方法的實現 裝置400,用於一種多用戶、多事務並發的資料庫管理系統4,所述裝置包括一事務列表維護模塊401,用於維護一個事務列表,其中所述事務列表用 於保存當前正在並發執行且未提交的事務; 一回滾段維護模塊402,用於維護 一個回滾段,其中所述回滾段用於記錄事務所做的修改; 一索引樹維護模塊 403,用於在執行査詢操作時,遍歷所述事務列表利用索引快速定位到滿足條 件的頁,遍歷頁記錄時檢査當前事務是否看得見當前記錄,如果看得見,則將 當前記錄加入到結果集中,如果看不見則利用所述回滾段中的撤銷日誌,構造
出該記錄的原始版本並添加到結果集中。所述回滾段中記錄撤銷日誌,撤銷曰 志中包含了撤銷類型、撤銷號、表ID、各欄位值等信息。任何插入、修改、 刪除操作均生成一條撤銷日誌,同時將回滾段ID、頁號、頁內偏移等信息編 碼成回滾指針,同時將回滾指針保存在記錄中。本發明為了實現可重複讀,資料庫管理系統對數據做修改會在回滾段中記 錄撤銷日誌,以便系統回滾,撤銷日誌中保存了原始數據,如果當前讀視圖看 不見當前記錄時,則從撤銷日誌中構建原始版本添加到結果集中,從而保證了 一個事務查看相同的信息不會看到兩個不同的版本,即如果一個事務在某個時 刻讀了一條記錄,接下來自己如果沒有修改,再讀該記錄應該得到同樣的值, 不管有沒有其它事務修改過該記錄。採用這種方法,有效的提升了系統性能,當然在一定程度上犧牲了數據正 確性,但對有些事務,這是可以接受的。在數據正確性和事務並發程度上做權 衡,隔離級別越高,數據正確性越高,但性能也越差。雖然本發明已以一較佳實施例揭露如上,然其並非用以限定本發明,在 不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明 作出各種相應的改變和變形,但這些相應的改變和變形都應屬於本發明所附的 權利要求的保護範圍。
權利要求
1、一種資料庫可重複讀實現方法,用於一種多用戶、多事務並發的資料庫管理系統,所述系統維護一事務列表、一回滾段及一索引樹,特徵在於,該方法包括步驟一,在遍歷所述系統維護的事務列表時利用索引快速定位到滿足條件的頁,其中,所述事務列表,用於保存當前正在並發執行且未提交的事務;步驟二,遍歷頁記錄時檢查當前事務是否看得見當前記錄,如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述系統維護的回滾段中的撤銷日誌,構造出該記錄的原始版本並添加到結果集中,其中所述回滾段用於記錄事務所做的修改。
2、 根據權利要求1所述的資料庫可重複讀實現方法,其特徵在於,所述 系統維護一個回滾段的步驟,進一步包括步驟11,所述系統在磁碟上生成回滾段日誌文件,同時在高速緩存中保 存相應頁,並使每次插入一撤銷日誌僅針對所述高速緩存中的頁; 步驟12,定期清理所述高速緩存中舊的撤銷日誌; 步驟13,定期將所述高速緩存中的頁存在到磁碟文件中。
3、 根據權利要求1所述的資料庫可重複讀實現方法,其特徵在於,所述 回滾段的內存結構信息包括回滾段ID、表空間ID、頁號。
4、 根據權利要求1所述的資料庫可重複讀實現方法,其特徵在於,所述 系統每次啟動一個事務,將該事務信息插入到所述事務列表中;每次事務提交 或回滾,將該事務從所述事務列表中刪除,以實現所述事務列表中只保存未提 交事務。
5、 根據權利要求4所述的資料庫可重複讀實現方法,其特徵在於,所述 事務信息包括事務ID、事務類型、指向事務列表中前後節點的指針、撤銷 號、分配給事務的回滾段、插入撤銷指針、更新撤銷指針、讀視圖指針。
6、 根據權利要求1所述的資料庫可重複讀實現方法,其特徵在於,所述 檢查當前事務是否看得見當前記錄時,需要在查詢節點中保存讀視圖結構,該 讀視圖結構保存當前事務執行時系統中並發執行的其它事務ID、最大事務ID 和最小事務ID,同時保存所述撤銷日誌清理相關信息,如果修改記錄的事務ID 小於所述事務列表看中的最小事務ID,則當前事務看得見當前記錄;如果修 改記錄的事務ID大於事務列表中的最大事務ID,則當前事務看不見當前記錄; 如果修改記錄的事務ID等於事務列表中任一事務ID,則當前事務看不見當前 記錄。
7、 根據權利要求1所述的資料庫可重複讀實現方法,其特徵在於,所述系統維護一索引樹的步驟,進一步包括步驟21,接收到査詢請求後,從索引樹的根節點開始沿著索引樹定位到 頁節點;歩驟22,定位到頁節點後開始構造結果集;歩驟23,遍歷頁中所有記錄,檢査當前事務中的事務ID,遍歷所述讀視圖 中的事務列表,査看所述讀視圖是否看得見當前記錄,如看得見,則將當前記 錄加入到結果集中,如看不見,則從記錄中取出回滾指針,從所述回滾指針中 解碼出所述撤銷日誌在所述回滾段中的位置,然後從該回滾段中取出相關數據 構造出前一次版本,並添加到結果集中;步驟24,獲取到所述前一個版本,檢査所述讀視圖是否看的見該版本記 錄,如果看不見,再構造更前一次的版本,如此重複,直至所述讀視圖看得見 某版本記錄為止,將該版本記錄加入到所述結果集中;歩驟25,檢查是否有下一條記錄,如果有,重複執行步驟23 24,直至遍 歷完數據頁鍊表,如果沒有,本次查詢結束。
8、 根據權利要求7所述的資料庫可重複讀實現方法,其特徵在於,所述 步驟21進一步包括步驟211,檢査所述根節點是否在高速緩存中,如在,執行步驟212;如 不在,將所述根節點換入所述高速緩存中,執行步驟212;步驟212,檢査當前節點是否是葉子節點,如不是,採用二分査找定位到 滿足査詢條件的索引項;步驟213,沿著所述索引項中指針定位到子節點,循環執行步驟212直至 定位到所述頁節點。
9、 根據權利要求7所述的資料庫可重複讀實現方法,其特徵在於,所述 記錄中包含回滾指針,該回滾指針中編碼了回滾ID、回滾段表空間ID、頁號、 頁內偏移、回滾類型。
10、 根據權利要求2所述的資料庫可重複讀實現方法,其特徵在於,在所 述歩驟11中,所述日誌文件分為若干大小相等的頁,所述頁中存儲所述撤銷 日誌,所述撤銷日誌中包含撤銷類型、撤銷號、表ID、各欄位值,任何插 入、修改、刪除操作均生成一條撤銷曰志。
11、 一種應用上述權利要求1 10中任一項所述的資料庫可重複讀實現方 法的實現裝置,用於一種多用戶、多事務並發的資料庫管理系統,其特徵在於, 所述裝置包括一事務列表維護模塊,用於維護一個事務列表,其中所述事務列表用於保 存當前正在並發執行且未提交的事務;一回滾段維護模塊,用於維護一個回滾段,其中所述回滾段用於記錄事務 所做的修改;一索引樹維護模塊,用於在執行査詢操作時,遍歷所述事務列表利用索引 快速定位到滿足條件的頁,遍歷頁記錄時檢查當前事務是否看得見當前記錄, 如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述回滾段中 的撤銷日誌,構造出該記錄的原始版本並添加到結果集中。
12、 一種應用權利要求11所述的裝置的資料庫管理系統,包括一資料庫 可重複讀實現裝置,其特徵在於,該裝置包括一事務列表維護模塊,用於維護一個事務列表,其中所述事務列表用於保存當前正在並發執行且未提交的事務;一回滾段維護模塊,用於維護一個回滾段,其中所述回滾段用於記錄事務所做的修改;一索引樹維護模塊,用於在執行査詢操作時,遍歷所述事務列表利用索引 快速定位到滿足條件的頁,遍歷頁記錄時檢查當前事務是否看得見當前記錄, 如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述回滾段中 的撤銷日誌,構造出該記錄的原始版本並添加到結果集中。
全文摘要
本發明公開了一種資料庫可重複讀實現方法,用於一種多用戶、多事務並發的資料庫管理系統,所述系統維護一事務列表、一回滾段及一索引樹,該方法包括步驟一,在遍歷所述系統維護的事務列表時利用索引快速定位到滿足條件的頁,其中,所述事務列表,用於保存當前正在並發執行且未提交的事務;步驟二,遍歷頁記錄時檢查當前事務是否看得見當前記錄,如果看得見,則將當前記錄加入到結果集中,如果看不見則利用所述系統維護的回滾段中的撤銷日誌,構造出該記錄的原始版本並添加到結果集中,其中所述回滾段用於記錄事務所做的修改。本發明還公開了一種應用上述方法的實現裝置,及一種應用所述方法和裝置的資料庫管理系統。
文檔編號G06F17/30GK101127045SQ20071012241
公開日2008年2月20日 申請日期2007年9月25日 優先權日2007年9月25日
發明者盧勤元, 印和平, 常二鵬, 李世亮 申請人:中興通訊股份有限公司