分布式事物理解

2021-07-02 15:18:46 字數 1042 閱讀 5083

1. 單機事物理解:

具有acid特性才能算是事物,

a: 原子性  , 即 事物的組成部分 要麼全部執行,要麼都不執行。 原子性通過undo 實現, 即事物執行過程中的步驟對應幾個版本,版本對應響應的undo回滾段,資料狀態的每次變化都會儲存在undo日誌裡。 執行中某一步驟出了問題要回滾 通過該步驟前一段步驟對應的undo來恢復資料狀態。

c:  一致性 ,即 事物內的 資料狀態在執行過程中整體必須保持一致, eg: 事物1:a轉100給b,事物2: b轉100給c ;  在事物1:a-100執行過程中,事物2訪問a帳號扔為100執行了轉賬操作給c,而事物1 也能正常執行a-100轉給b   , 這樣原本a、b、c 三賬號共計100元 變為 200元,  資料不一致。

事物的一致性其實保證 單元事物在全部執行完之後才能對其他單元事物可見。這也就避免上面的轉賬問題。

i :  隔離性:  由 鎖 實現 事物之間的隔離,  不同的鎖(序列化,排它鎖,讀寫鎖分離、寫鎖覆蓋讀鎖(讀寫事物))  引用:所有操作序列化 -》 對共享資料加 排他鎖(表級,行級)--》讀寫鎖分離 (共享鎖,排他鎖)實現讀讀並行,即實現可重複讀的隔離級別 --》 要實現讀寫並行,即去掉讀鎖(共享鎖),但是就不可重複讀了。

隔離是對一致性的破壞,最高端別的隔離即 事物之間序列化為乙個佇列執行 是對一致性最低階的破壞。

隔離級別:(從高到低)

序列化讀寫  (所有讀,寫事物都不能併發執行)

可重複讀      (可讀讀併發)

讀已提交     (可讀讀,讀寫併發,通過後面的寫事物的寫鎖 覆蓋 前面的 讀事物讀鎖,且前面的讀事物裡的資料不能重複讀)

讀未提交    (可讀讀、讀寫、寫讀併發,  寫讀併發會出現髒讀)

d:  永續性: 提交後的事物必須要持久化,持久化過程可能會出現不能儲存問題。

針對持久化 與  提交延遲 的 調校 做出的 持久策略如下:

1. 事物一旦commit到記憶體 就返回成功,標誌事物處理完成。 延遲低,但記憶體持久化硬碟得不到保證。

2. 將多次commit到記憶體資料打包再寫入記憶體。   必須達到多次提交後,才能持久化硬碟,所以有額外延遲。

分布式事物

1 分布式事務 在單機應用上,我們使用事務是很方便的,因為所有的業務邏輯都在本地,資料庫事務就能解決 acid 問題,特別是使用一些j2ee的框架,每一層的業務邏輯都給我們安排得妥妥當當的。當系統已經被拆分部署到多個伺服器例項上時,一般每個伺服器都只負責維護乙個子系統一張 數張表。與單機相比,業務還...

XA 分布式事物

當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...

分布式事物 第一章 分布式事物簡介

事務就是提供一種 要麼什麼都不做,要麼做全套 all or nothing 機制。a 原子性 atomicity 你買東西要麼交錢收貨一起都執行,要麼發不出貨,就退錢。乙個事務 transaction 中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被...