[發明專利]處理數據庫事務的方法、客戶端和服務器有效
| 申請號: | 201610496073.3 | 申請日: | 2016-06-30 |
| 公開(公告)號: | CN107577678B | 公開(公告)日: | 2021-02-09 |
| 發明(設計)人: | 彭勇飛 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F16/23 | 分類號: | G06F16/23;G06F12/08 |
| 代理公司: | 北京龍雙利達知識產權代理有限公司 11329 | 代理人: | 毛威;肖鸝 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 處理 數據庫 事務 方法 客戶端 服務器 | ||
本發明提供一種處理數據庫事務的方法、客戶端與服務器,該方法包括:服務器接收客戶端發送用于請求目標數據的數據庫訪問請求;向客戶端發送目標數據的第一版本,第一版本為服務器當前存儲的目標數據的版本,服務器中只保存目標數據的最近一次提交更新的版本;接收客戶端基于第一版本執行完第一事務后發送的事務提交請求,事務提交請求中包括用于記錄第一事務的數據操作的日志;根據日志,在確定第一事務的數據操作與服務器當前存儲的目標數據的版本不存在數據沖突的情況下,按照第一事務的數據操作修改服務器當前存儲的目標數據的版本,獲得目標數據的提交更新的版本。本發明實現了無鎖事務機制,降低數據庫的存儲管理復雜度。
技術領域
本發明涉及數據庫技術領域,并且更具體地,涉及一種處理數據庫事務的方法、客戶端和服務器。
背景技術
當多個用戶同時訪問數據庫時,會產生多個事務并發操作同一數據的情況,若對這種并發操作不加控制就可能會產生在數據庫中存取不正確數據的問題,破壞事務與數據庫的一致性。
封鎖是實現并發控制的一個非常重要的技術。所謂封鎖就是事務T對某個數據操作之前,先向系統發出對其加鎖的請求,加鎖后事務T就對該數據有了一定的控制,在事務T釋放它的鎖之前,其他事務均不能對該數據進行操作。封鎖對象的大小稱為封鎖粒度。封鎖對象可以是邏輯單元,也可以是物理單元。上述封鎖的技術也稱為鎖機制(Lock)。
在鎖機制中,讀會阻塞寫,寫也會阻塞讀,當封鎖粒度較大時,會降低數據庫的訪問實時性,導致修改同一數據時阻塞較大。而且同一數據的讀寫沖突會產生功能長時間阻塞,容易產生死鎖問題,需要定期做死鎖檢測。
針對鎖機制存在的問題,當前技術提出了多版本并發控制(MultiversionConcurrency Control,MVCC)的事務機制。一般把基于鎖的并發控制機制稱為悲觀機制,而把MVCC機制稱為樂觀機制。
在MVCC中,為同一數據維護多個版本(每個版本對應一個時間戳),即這個數據被修改提交一次就生成一個新的版本,同一數據的多個版本之間的串行化使用時間戳(或版本號)或事務標識ID的方式來支持。對于要對該數據進行讀操作的事務T來說,總是可以提供時間戳與事務T的開始時刻相一致的版本,不管這個事務T執行的時間有多長,該事務T始終看到的是該數據的同一個版本,即使在該事務T執行期間該數據被其他事務修改了,該事務T也不會出現“臟”讀或幻讀的現象。因此,MVCC通過為同一數據維護多個版本,實現了讀操作與寫操作并發而互不影響,也可以支持多個讀操作并發而互不影響。但是,為同一數據維護多個版本的方式并不能解決并發的寫操作與寫操作之間的沖突。在MVCC中,還是利用加鎖的方式解決來寫操作的沖突問題。如果一個事務對一個數據執行寫操作,該數據就被鎖定,在該事務釋放它的鎖之前,其他事務均不能對該數據進行操作,即多個寫操作會串行執行,因此不會存在沖突。
上述可知,現有的MVCC機制相對于傳統的鎖機制,避免了讀阻塞寫,寫阻塞讀,但是還是無法避免寫阻塞寫。此外,在現有的MVCC技術中,由于需要存儲同一數據的多個版本,導致數據庫的存儲管理較為復雜,而且還需要定期清理不再需要的版本以回收空間,也增加了額外的開銷。
發明內容
本發明提供了一種處理數據庫事務的方法、客戶端和服務器,實現了一種能夠支持多個讀操作和/或寫操作同時并發的無鎖事務機制,并且能夠降低數據庫的存儲管理復雜度。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610496073.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:數據寫入方法及內存系統
- 下一篇:基于媒體信息采集的原創文章影響力分析系統





