<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

一種改進的內存數據庫封鎖方法

文檔序號:6602567閱讀:611來源:國知局
專利名稱:一種改進的內存數據庫封鎖方法
技術領域
本發明屬于計算機內存數據庫技術領域,具體涉及一種基于傳統封鎖方式的改進 的內存數據庫封鎖方法。
背景技術
在數據庫系統中,事務可以一個個地串行執行,即每個時刻只有一個事務運行,其 他事務必須等到這個事務結束之后方能運行。為了充分利用系統資源,發揮數據庫共享資 源的特點,應該允許多個事務并行地執行。當多個用戶并發地存取數據庫時就會產生多個 事務同時存取同一個數據的情況。若對并發操作不加控制,就可能會存取和不正確的數據, 破壞數據庫的一致性。所以數據庫管理系統必須提供并發控制機制。對于內存數據庫系統 而言,數據加鎖開銷與處理開銷相當,而且由于內存的存取速度比磁盤塊的多,事務的執行 時間相對磁盤數據庫則大大縮短;相應的,鎖的占有時間也就大大縮短,故細粒度鎖的基本 優點與必要性也隨之喪失。因此,在內存數據庫中一般采用較大粒度鎖,如元組級或關系 級,這無疑降低了并發機制的復雜度,減輕了系統負擔,從而使系統總體性能提高[1]。目前 在內存數據庫系統中普遍采用的是“單寫多讀”并發控制策略,利用內存數據庫事務執行時 間短的特點,通過犧牲一定并發讀來提高事務執行效率。這種方式在應對大量并發的短小 事務時效率并不十分理想,本文通過引入粗粒度意向鎖和事務自有鎖粒度變換兩種方式來 改進這種并發控制方式,提高內存數據庫在應對高并發短小事務時的整體性能。

發明內容
本發明的目的在于提出一種改進的內存數據庫封鎖方法,要解決的問題是,在傳 統內存數據庫封鎖機制中,對于數據交集不大的短小事務之間的并發讀支持過低,大量的 實際浪費在讀事務等待寫事務提交的過程中,降低了內存數據庫的事務吞吐率。本發明提出的改進的內存數據庫封鎖方法,是利用粗粒度意向鎖和鎖粒度轉換改 進傳統的封鎖方式,提高內存數據庫的事務事項效率。本發明的基本內容如下A,允許事務在內存數據庫上加兩種粗粒度意向鎖標記,一種是數據庫級讀意向鎖 標記,表示事務對數據庫中的關系表有讀請求意向;另一種是數據庫級寫意向鎖標記,表示 事務對數據庫中的關系表有寫請求意向;B,事務的封鎖粒度根據數據庫級意向鎖標記自行轉變,利用數據交集不重合的特 殊條件對不同的關系表加不同種類的鎖標記;c,允許多個讀事務與數據交集不重疊的單個寫事務并行操作。本發明除了數據庫級讀寫鎖和表級讀寫鎖兩種粒度的鎖,還引入另外一種粗粒度 意向鎖——數據庫級讀寫意向鎖,該鎖用于表示事務在數據庫級別上的操作意向(讀取或 者寫入),可以作為其他事務操作數據庫上鎖之前的重要參考,事務可以根據需要在操作時 加不同類型的鎖。在此基礎上,為了進一步提高并發度,引入了鎖粒度動態變換的機制,即數據庫級鎖和表級鎖可以根據事務對關系共享程度的需求進行鎖粒度的動態智能轉換。因 為數據庫級鎖比表級鎖開銷小,因此當不需要較細的鎖粒度時使用數據庫級鎖。如果一個 或者多個事務在訪問數據庫時被其他事務的鎖阻塞,數據庫級鎖會被分解為表級鎖,并且 再次嘗試加鎖。當不需要細粒度鎖時,表級鎖被轉化為數據庫級鎖。過程可以由圖1的流 程圖來表示。以讀事務為例,當事務需要讀取某些數據記錄時,系統會提前分析事務中涉及 到的數據表,首先對數據庫請求數據庫級讀意向鎖,然后檢查數據庫是否存在全局的寫意 向鎖,如果存在,則說明有寫事務正在更新數據庫的某一部分并且尚未結束,此時系統會檢 查讀事務相關的數據表是否被寫事務加鎖,如果寫事務正在更新相關表,那么讀事務不得 不等待寫事務完成;如果相關表沒有被寫事務加鎖,則讀事務可以并發的上讀鎖讀取數據。 寫事務請求加鎖的過程基本與此類似。區別是寫事務之間是絕對互斥的。不存在兩個寫事 務同時向數據庫寫入的情況。


圖1是封鎖步驟流程圖。圖2是與傳統封鎖機制的比較說明圖(考察吞吐量和平均反應時間)。圖3是與傳統封鎖機制的比較說明圖(考察事務更新率和平均反應時間)。
具體實施例方式參照圖1的封鎖步驟流程示意圖,按照以下步驟操作1.讀事務封鎖過程如下8)分析事務中需要使用的關系表集合TS,可通過事務代碼中涉及到的數據庫名 和關系表名之間獲得。9)在沒有申請過數據庫級讀意向鎖的情況,對于內存數據庫加讀意向鎖標記。10)檢查內存數據庫上是否有數據庫級寫意向鎖標記。11)若3)中檢查到有數據庫級寫意向鎖標記,則檢查關系表集合TS中的關系表是 否有寫鎖標記。12)若4)中檢查到TS中有關系表具有寫鎖標記,則本次事務操作被阻塞,等待其 他事務通知其恢復執行。13)若4)中沒有檢查到TS中有關系表具有寫鎖標記,則本次事務對TS中的關系 表加讀鎖標記,封鎖過程完成。14)若3)中沒有檢查到有數據庫級寫意向鎖標記,則本次事務對TS中的關系表加 讀鎖標記,封鎖過程完成。2.寫事務封鎖過程如下1)分析事務中需要使用的關系表集合TS,可通過事務代碼中涉及到的數據庫名 和關系表名之間獲得。2)檢查內存數據庫上是否有數據庫級寫意向鎖標記3)若2)中檢查到有數據庫級寫意向鎖標記,則本次事務操作被阻塞,等待其他事 務通知其恢復執行。4)若2)中沒有檢查到有數據庫級寫意向鎖標記,則檢查本事務是否申請過數據庫寫意向鎖。5)若4)中沒有檢查到本事務曾經申請過數據庫寫意向鎖,則多數據庫加寫意向 鎖標記O6)檢查是否有數據庫讀意向鎖。7)若6)檢查到有數據庫讀意向鎖標記,則檢查TS中是否有關系表具有讀標記。8)若7)中檢查到有關系表具有讀標記,則本次事務操作被阻塞,等待其他事務通 知其恢復執行。9)若7)中沒有檢查到相關表有讀標記,則對TS中關系表加寫鎖標記,本次封鎖完 成。10)若6)中沒有檢查到有數據庫級讀意向鎖標記,則對TS中關系表加寫鎖標記, 本次封鎖完成。3.解鎖過程如下1)釋放TS中關系表上的鎖標記2)釋放數據庫上的意向鎖標記3)通知其他事務開始競爭進入執行利用本方法進行事務封鎖,可以很好的用于加速內存數據庫事務執行和提高內存 數據庫事務吞吐量。參照圖2以及圖3,在與傳統的封鎖機制比較之后,可以明顯看出,針對 短小的內存數據庫事務,改進后的算法可以提高內存數據庫系統的整體執行效率,獲得了 比較明顯的良好效果。圖2表明在事務之間數據交集不大的情況下,改進后的封鎖協議在 不同的事務并發場合均優于單寫多讀協議,因為改進后的協議允許不重疊的讀事務和寫事 務并發執行,加快了系統的整體執行速度。圖3中,在固定的事務并發度情況下,不同隨著 更新事務所占比例的提升,單寫多讀協議中讀事務需要等待的時間就越長,整體執行效率 就會降低,系統平均反應時間就會增加;利用改進的封鎖協議,允許部分讀事務和寫事務并 行操作,減少了讀事務的等待時間,提高了系統效率。
權利要求
一種改進的內存數據庫封鎖方法,其特征在于a)允許事務在內存數據庫上加兩種粗粒度意向鎖標記,一種是數據庫級讀意向鎖標記,表示事務對數據庫中的關系表有讀請求意向;另一種是數據庫級寫意向鎖標記,表示事務對數據庫中的關系表有寫請求意向;b)事務的封鎖粒度根據數據庫級意向鎖標記自行轉變,利用數據交集不重合的特殊條件對不同的關系表加不同種類的鎖標記;c)允許多個讀事務與數據交集不重疊的單個寫事務并行操作。
2.根據權利要求1所述的改進的內存數據庫封鎖方法,其特征在于讀事務封鎖過程 如下1)分析事務中需要使用的關系表集合TS,這通過事務代碼中涉及到的數據庫名和關 系表名之間獲得;2)在沒有申請過數據庫級讀意向鎖的情況,對于內存數據庫加讀意向鎖標記;3)檢查內存數據庫上是否有數據庫級寫意向鎖標記;4)若步驟3)中檢查到有數據庫級寫意向鎖標記,則檢查關系表集合TS中的關系表是 否有寫鎖標記;5)若步驟4)中檢查到TS中有關系表具有寫鎖標記,則本次事務操作被阻塞,等待其他 事務通知其恢復執行;6)若步驟4)中沒有檢查到TS中有關系表具有寫鎖標記,則本次事務對TS中的關系表 加讀鎖標記,封鎖過程完成;7)若步驟3)中沒有檢查到有數據庫級寫意向鎖標記,則本次事務對TS中的關系表加 讀鎖標記,封鎖過程完成。
3.根據權利要求1所述的改進的內存數據庫封鎖方法,其特征在于寫事務封鎖步驟 如下1)分析事務中需要使用的關系表集合TS,這通過事務代碼中涉及到的數據庫名和關 系表名之間獲得;2)檢查內存數據庫上是否有數據庫級寫意向鎖標記;3)若步驟2)中檢查到有數據庫級寫意向鎖標記,則本次事務操作被阻塞,等待其他事 務通知其恢復執行;4)若步驟2)中沒有檢查到有數據庫級寫意向鎖標記,則檢查本事務是否申請過數據 庫寫意向鎖;5)若步驟4)中沒有檢查到本事務曾經申請過數據庫寫意向鎖,則多數據庫加寫意向 鎖標記;6)檢查是否有數據庫讀意向鎖;7)若步驟6)檢查到有數據庫讀意向鎖標記,則檢查TS中是否有關系表具有讀標記;8)若步驟7)中檢查到有關系表具有讀標記,則本次事務操作被阻塞,等待其他事務通 知其恢復執行;9)若步驟7)中沒有檢查到相關表有讀標記,則對TS中關系表加寫鎖標記,本次封鎖完成;10)若步驟6)中沒有檢查到有數據庫級讀意向鎖標記,則對TS中關系表加寫鎖標記,本次封鎖完成。
4.根據權利要求1所述的改進的內存數據庫封鎖方法,其特征在于解鎖過程如下1)釋放TS中關系表上的鎖標記;2)釋放數據庫上的意向鎖標記;3)通知其他事務開始競爭進入執行。
全文摘要
本發明屬于內存數據庫技術領域,具體為改進的內存數據庫封鎖方法。該方法利用內存數據庫中事務短小,數據交集不大的特點,在單寫多讀封鎖機制基礎上,引入粗粒度意向鎖和封鎖粒度轉換機制,在事務開始前檢查意向鎖以及數據交集,并且利用不同粒度的封鎖,允許多個讀事務與不沖突的單個寫事務并行操作,加速了事務執行過程,減少讀事務的等待時間,提高事務吞吐量。
文檔編號G06F17/30GK101853279SQ201010176179
公開日2010年10月6日 申請日期2010年5月13日 優先權日2010年5月13日
發明者周游弋, 薛向陽, 金城 申請人:復旦大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影