中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

SequoiaDB分布式事務實現原理是什么

這篇文章將為大家詳細講解有關SequoiaDB 分布式事務實現原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

創新互聯主營高平網站建設的網絡公司,主營網站建設方案,成都app開發,高平h5微信平臺小程序開發搭建,高平網站營銷推廣歡迎高平等地區企業咨詢

1

分布式事務背景

隨著分布式數據庫技術的發展越來越成熟,業內對于分布式數據庫的要求也由曾經只用滿足解決海量數據的存儲和讀取這類邊緣業務向核心交易業務轉變。分布式數據庫如果要滿足核心賬務類交易需求,則其需要完善分布式事務,向傳統關系型數據庫看齊。即分布式事務的實現也需要像傳統關系型數據庫的事務一樣滿足事務的標準要求及定義,即ACID特征。

分布式數據庫的數據是進行多機器多節點分散存儲的,這樣的存儲架構為實現分布式事務帶來了極大的難度。數據事務操作時,事務操作會結合數據分布情況,到不同的存儲位置上去執行,而這個存儲位置位于網絡中的不同機器的不同磁盤上。

2

事務基本概念

2.1 事務使用場景

銀行應用是一個經典案例,可以解釋事務應用的必要性。假設銀行數據庫有兩張表,支票賬戶表(check)和存款賬戶表(save)?,F在要從LiLei的支票賬戶里轉賬200元到她的存款賬戶,那么需要至少完成3步操作:

1. 檢查支票存款賬戶的余額是否大于200元;

2. 從支票存款賬戶余額中減去200元;

3. 在存款賬戶余額中增加200元;

所有的操作被打包在一個事務里執行,如果某一步失敗,就回滾所有已完成步驟。事務操作一般用 START TRANSACTION 語句開始一個事務,用 COMMIT 語句提交整個事務,永久地修改數據,或者用 ROLLBACK 語句回滾整個事務,取消已做的修改。事務SQL操作樣例如下:

START TRANSACTION;SELECT balance FROM check WHERE customer_id = 10233276 ; UPDATE check SET balance = balance - 200.00 WHERE customer_id = 10233276; UPDATE save SET balance = balance + 200.00 WHERE customer_id = 10233276; COMMIT;

此為銀行對于轉賬類的交易所必須使用的事務操作場景,而在實際的生產環境中,事務操作的復雜度比這復雜得多。

2.2 事務概念和特性

事務是訪問及操作數據庫各類數據項的操作序列集合,如各類增刪改查 SQL 操作組合。它通常由 begin transaction 和 end transaction 語句來界定。

數據庫系統的事務需包含以下特性:

  • 原子性(Atomicity):事務的所有操作在數據庫中要么全部執行成功,要么全部執行失敗。

  • 一致性(Correspondence):事務操作前后,數據的完整性必須保持一致。

  • 隔離性(Isolation):多個用戶并發訪問數據庫時,數據庫為每個用戶開啟事務,不能被其他事務的操作數據所干擾。即每個事務都感覺不到系統中有其他事務在并發地執行。

  • 持久性(Durability):一個事務成功完成后,它對數據庫的改變必須是永久的,即使出現系統故障也不會對事務有影響。

事務隔離級別

針對事務隔離,SQL標準定義了4類隔離級別,包括了一些具體規則,用來限定事務內外的哪些改變是可見的,哪些是不可見的。下面介紹四種隔離級:

  • READ UNCOMMITTED(讀取未提交內容)

在READ UNCOMMITTED隔離級別,所有事務都可以“看到”未提交事務的執行結果。讀取未提交數據,也被稱之為“臟讀”。

  • READ COMMITTED(讀取提交內容)

大多數數據庫系統的默認隔離級是read committed。它滿足了隔離的早先單定義:一個事務在開始時,只能“看見”已經提交事務所做的改變,一個事務從開始到提交前,所做的任何數據改變都是不可見的,除非已經提交。此隔離級別不支持“可重復讀”的操作。這意味著用戶運行同一語句兩次,看到的結果是不同的。

  • REPEATABLE READ (可重讀)

REPEATABLE READ隔離級解決了READ UNCOMMITTED隔離級導致的問題。它確保同一事務的多個實例在并發讀取數據時,會“看到同樣的”數據行。不過理論上,這會導致另一個棘手問題:幻讀(Phantom Read)。簡單來說,幻讀指當用戶讀取某一范圍的數據行時,另一個事務又在該范圍內插入了新行,當用戶再讀取該范圍的數據行時,會發現有新的“幻影”行。數據庫存儲引擎可以通過多版本并發控制 (Multiversion Concurrency Control)機制解決了幻讀問題,如MySQL的InnoDB和Falcon。

  • SERIALIZABLE (可串行化)

SERIALIZABLE是最高級別的隔離級,它通過強制事務排序,使之不可能相互沖突,從而解決幻讀問題。簡言之,SERIALIZABLE是在每個讀的數據行上加鎖。在這個級別,可能導致大量的超時現象和鎖競爭現象。數據庫應用中很少看到有用戶選擇這種隔離級。但如果用戶的應用為了數據的穩定性,需要強制減少并發的話,也可以選擇這種隔離級。

3

分布式事務

分布式事務的實現需要保證事務的原子性、一致性、隔離性和持久性,而實現此ACID屬性的基本技術思路有:

  • 通過“兩階段提交(Two-phase Commit,2PC)”協議實現事務的原子性、一致性和持久性等屬性;

  • 隔離性級別的實現通常使用多版本并發控制機制來保證。實現多版本并發控制常用的方式是“快照隔離(Snapshot Isolation)”技術;

下面先分別介紹一下這兩個概念。

3.1 兩階段提交

兩階段提交(Two-phase Commit,2PC)是為了使基于分布式系統架構下的所有節點在進行事務提交時保持一致性而設計的一種協議。

兩階段提交算法的成立基于以下假設:

  • 該分布式系統中,存在一個節點作為事務協調器,其他節點作為事務管理器,且節點之間可以進行網絡通信。

  • 所有節點都采用預寫式日志(Write Ahead Log),且日志被寫入后即被保持在可靠的存儲設備上,即使節點損壞不會導致日志數據的消失。

  • 所有節點不會永久性損壞,即使損壞后仍然可以恢復。

以下對二階段提交算法分階段進行說明。

第一階段(提交請求階段)

事務協調器節點向所有事務管理器節點詢問是否可以執行提交操作,并開始等待各事務管理器節點的響應。事務管理器節點執行詢問發起為止的所有事務操作,并將Undo信息和Redo信息寫入日志。

各事務管理器節點響應事務協調器節點發起的詢問。如果事務管理器節點的事務操作實際執行成功,則它返回一個“同意”消息;如果事務管理器節點的事務操作實際執行失敗,則它返回一個“中止”消息。有時候,第一階段也被稱作投票階段,即各事務管理器投票是否要繼續接下來的提交操作。

第二階段(提交執行階段)

巨杉數據庫在實現多版本并發控制技術時,除了采用事務鎖和內存老版本機制外,還采用了磁盤回滾段對并發控制策略進行了完善與補充。眾所周知,內存是高速存儲設備,但是其存在存儲空間比較小以及斷電數據丟失的問題。針對此問題,磁盤回滾段機制通過將內存中的“老版本數據”持久化到磁盤上,保證數據庫在掉電等異常情況下不會影響事務的正常操作。

回滾段使用系統集合空間,名為”SYSRBS”。另外,其內部會使用1個集合,命名格式為”SYSRBSXXXX”,其中XXXX為循環編號,范圍為0~4096。同時,回滾段使用第一個集合(即:SYSRBS0000)存儲RBS的元數據,包括當前RBS集合和最后空閑RBS集合。巨杉數據庫會在啟動時檢查是否支持MVCC,如果支持,則會檢查”SYSRBS”集合空間是否存在,不存在的話則會創建此集合空間,同時創建 SYSRBSCL0000 和 SYSRBSCL0001 集合。如果回滾段的集合空間和集合均存在,則會從 SYSRBSCL0000 中讀取元數據信息,根據當前RBS集合和最后空閑RBS集合信息創建下一下 SYSRBSCLXXXX。

為了更進一步提高讀取速度,巨杉數據庫將磁盤回滾段與內存老版本相結合,最新的老版本還是掛在記錄鎖的 oldversionContainer 上,其它更老的版本放磁盤上。這樣滿足大多數據短事務只用讀內存的老版本,無需再讀磁盤,從而提供了讀取速度??紤]到主節點異常的情況,多版本控制需要將記錄老版本數據的回滾段也同步至備節點,當備節點升為主節點后,可以通過回滾段重建老版本。

當事務ID小于全局最小事務ID(lowTranID)時,數據庫后臺的異步線程負責回收老版本記錄和索引節點內存。內存老版本清理時要將其保存的老版本寫入RBS。而磁盤老版本的清理則是從最后空閑集合(lastFreeCL)開始,逐個對比表的最大事務ID(MaxGTID),如果小于全局最小事務ID,則可以刪除這個表(即SYSRBSCLXXXX)。

巨杉數據庫通過采用事務鎖、內存老版本以及磁盤回滾段重建老版本的設計來實現了多版本并發控制技術。此設計通過對內存結構的合理利用,存儲數據和索引的老版本信息,從而實現多版本數據的快速的并發訪問。

關于SequoiaDB 分布式事務實現原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章題目:SequoiaDB分布式事務實現原理是什么
鏈接URL:http://www.2m8n56k.cn/article6/jcgsig.html

成都網站建設公司_創新互聯,為您提供域名注冊、移動網站建設、Google做網站、網站收錄、動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 欧美日韩专区国产精品 | 日本一级~片免费永久 | 日本女人www| 国产成人一区二区三区 | 97久久精品 | 美女动作一级毛片 | 亚洲欧洲日产国码一级毛片 | 欧美不卡在线视频 | 国产系列在线观看 | 欧美jizzhd精品欧美 | 国产91香蕉视频 | 中国一级毛片aaa片 中国一级毛片录像 | 国产自产v一区二区三区c | 在线精品自拍 | 老司机午夜精品网站在线观看 | 久久精品国产只有精品2020 | 成人精品一区二区三区 | 亚洲精品国产第一区第二区国 | 日韩三级一区 | 一级a毛片 | 国产一区二区三区欧美精品 | 久久99国产精品视频 | 写真片福利视频在线播放 | 国产三级在线观看 | 牛牛a级毛片在线播放 | 夜色综合 | 男女午夜爱爱久久无遮挡 | 欧美一级俄罗斯黄毛片 | 日本三级香港三级人妇gg在线 | 国产成人咱精品视频免费网站 | 欧美色欧美亚洲高清在线视频 | 手机看片久久高清国产日韩 | 国产成人精品视频频 | videosfree性欧美另类 | 国产成人黄色 | 久久国产精品女 | 国产欧美一区二区 | 国产一级一片免费播放 | a理论片| 三级黄色片在线免费观看 | 久久久久久综合一区中文字幕 |