事務
把多條語句作為一個整體進行操作的功能,被稱為數據庫事務。數據庫事務可以確保該事務范圍內的所有操作都可以全部成功或者全部失敗。
事物具有 4 個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為 ACID 特性。
- Atomicity(原子性):一個事務中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被恢復到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
- Consistency(一致性):在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。完整性包括外鍵約束、應用定義的等約束不會被破壞。
- Isolation(隔離性):數據庫允許多個并發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務并發執行時由于交叉執行而導致數據的不一致。
- Durability(持久性):事務處理結束后,對數據的修改就是永久的,即便系統故障也不會丟失。
分布式事務
銀行跨行轉賬業務是一個典型分布式事務場景,假設 A 需要跨行轉賬給 B,那么就涉及兩個銀行的數據,無法通過一個數據庫的本地事務保證轉賬的 ACID,只能夠通過分布式事務來解決。
分布式事務就是指事務的發起者、資源及資源管理器和事務協調者分別位于分布式系統的不同節點之上。在上述轉賬的業務中,用戶 A-100 操作和用戶 B+100 操作不是位于同一個節點上。本質上來說,分布式事務就是為了保證在分布式場景下,數據操作的正確執行。
分布式事務在分布式環境下,為了滿足可用性、性能與降級服務的需要,降低一致性與隔離性的要求,一方面遵循 BASE 理論(BASE 相關理論,涉及內容非常多,感興趣的同學,可以參考 BASE 理論):
基本業務可用性(Basic Availability)。
柔性狀態(Soft state)。
最終一致性(Eventual consistency)。
同樣的,分布式事務也部分遵循 ACID 規范:
原子性:嚴格遵循。
一致性:事務完成后的一致性嚴格遵循;事務中的一致性可適當放寬。
隔離性:并行事務間不可影響;事務中間結果可見性允許安全放寬。
持久性:嚴格遵循。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.