資料庫事務,原子性、一致性、隔離性、永續性
資料庫事務,原子性(Atomic)、一致性(Consistency)、隔離性(Isolation)、永續性(Durabiliy)
很多複雜的事務要分佈進行,但它們組成了一個整體,要麼整體生效,要麼整體失效。這種思想反應到資料庫上,就是多條SQL語句,要麼所有執行成功,要麼所有執行失敗。
資料庫事務由嚴格的定義,它必須滿足4個特性:
原子性(Atomicity),一致性(consistency),隔離性(Isolation),永續性(Durability)。
原子性:
表示組成一個事務的多個資料庫操作是一個不可分割的原子單元,只有所有的操作執行成功,整個事務才提交。事務中的任何一個資料庫操作失敗,已經執行的任何操作都必須被撤銷,讓資料庫返回初始狀態。
一致性
事務操作成功後,資料庫所處的狀態和他的業務規則是一致的,即資料不會被破壞。如A賬戶轉賬100元到B賬戶,不管操作成功與否,A和B賬戶的存款總額是不變的。
隔離性
在併發資料操作時,不同的事務擁有各自的資料空間,他們的操作不會對對方產生敢逃。準確地說,並非要求做到完全無干擾。資料庫規定了多種事務隔離界別,不同的隔離級別對應不用的干擾成都,隔離級別越高,資料一致性越好,但併發行越弱。
永續性:
一旦事務提交成功後,事務中所有的資料操作都必須被持久化到資料庫中。即使在事務提交後,資料庫馬上崩潰,在資料庫重啟時,也必須保證能夠通過某種機制恢復資料。
在這些事務特性中,資料“一致性”時最終目標,其他特性都是為達到這個目標而採取的措施、要求或手段。
資料庫管理系統一般採用重執行日誌來保證原子性、一致性和永續性。重執行日誌記錄了資料庫變化的每一個動作,資料庫在一個事務中執行一部分操作後發生錯誤退出,資料庫即可根據重執行日誌撤銷已經執行的操作。對於已經提交的事務即使資料庫崩潰,在重啟資料庫時也能後根據日誌對尚未持久化的資料進行相應的重執行操作。
看到最後的幫忙點個贊?? 謝謝,這個對我真的很重要!
相關文章
- MySQL資料庫事務隔離性的實現MySql資料庫
- 分散式事務中的一致性和隔離性你真的懂了嗎分散式
- MySQL事務(二)事務隔離的實現原理:一致性讀MySql
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- Actor模型淺析 一致性和隔離性模型
- 深入理解oracle的事務隔離性Oracle
- 資料庫事務 ACID屬性、資料庫併發問題和四種隔離級別資料庫
- 併發程式設計的原子性 != 事務ACID的原子性程式設計
- 一文說透事務隔離性——理論篇
- RocketMQ系列(七)事務訊息(資料庫|最終一致性)MQ資料庫
- 資料庫事務與事務的隔離級別資料庫
- 資料庫事務與隔離級別資料庫
- 不支援原子性的 Redis 事務也叫事務嗎?Redis
- 從資料庫角度談業務連續性資料庫
- 一文搞懂MySQL事務的隔離性如何實現|MVCCMySqlMVC
- Redis與資料庫資料一致性Redis資料庫
- 對線面試官:通過MVCC資料庫事務的一致性面試MVC資料庫
- 對線面試官:透過MVCC資料庫事務的一致性面試MVC資料庫
- 聊聊資料庫的事務隔離級別資料庫
- 資料一致性(一) - 介面呼叫一致性
- 永續性Akka、Kafka、Cassandra實現CQRS資料同步Kafka
- 用友微服務事務一致性實踐微服務
- 快取與資料庫一致性快取資料庫
- 快速檢查資料庫一致性資料庫
- MySQL資料庫引擎、事務隔離級別、鎖MySql資料庫
- [資料庫]事務的4種隔離級別資料庫
- 深入剖析分散式事務一致性分散式
- 面試官:Redis的事務滿足原子性嗎?面試Redis
- 使用 Debezium 實現真正的原子微服務以確保資料一致性 – brainDOSE微服務AI
- Unsafe原子性
- volatile 可見性與原子性
- 快取與資料庫的一致性快取資料庫
- 如何實現資料庫讀一致性資料庫
- 聊聊雲原生資料庫的一致性資料庫
- MySQL資料一致性MySql
- 資料庫系列:事務的4種隔離級別資料庫
- 分散式事務方案 - 最終一致性分散式
- Dubbo 分散式事務一致性實現分散式