本地事務和分散式事務的區別
1 事務
事務(Transaction)是訪問並可能更新資料庫中各種資料項的一個程式執行單元(unit)
2 事務的特性
原子性:指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
一致性:事務必須使資料庫從一個一致性狀態變換到另外一個一致性狀態。轉賬前和轉賬後的總金額不變。
隔離性:事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每一個使用者開啟的事務,不能被其他事務的運算元據所干擾,多個併發事務之間要相互隔離。
永續性:指一個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響
3.1 READ UNCOMMITTED: 贓讀、不可重複讀、虛讀都有可能發生。
3.2 READ COMMITTED: 避免贓讀。不可重複讀、虛讀都有可能發生。(oracle預設的)
3.3 REPEATABLE READ:避免贓讀、不可重複讀。虛讀有可能發生。(mysql預設)
MVCC
MySQL:
MySQL引入了redo log,當做資料修改的時候,不僅在記憶體中操作,還會在redo log中記錄這次操作。當事務提交的時候,會將redo log日誌進行刷盤(redo log一部分在記憶體中,一部分在磁碟上)。當資料庫當機重啟的時候,會將redo log中的內容恢復到資料庫中,再根據undo log和binlog內容決定回滾資料還是提交資料
Undo Log 是為了實現事務的原子性(事物裡的操作要麼都完成,要麼都不完成),在MySQL資料庫InnoDB儲存引擎中,還用Undo Log來實現多版本併發控制(簡稱:MVCC)。
為了滿足事務的原子性,在操作任何資料之前,首先將資料備份到一個地方(也就是Undo Log,undo日誌存放在共享表空間裡),然後進行資料的修改。如果出現了錯誤或者使用者執行了ROLLBACK語句,系統可以利用Undo Log中的備份將資料恢復到事務開始之前的狀態。除了可以保證事務的原子性,Undo Log也可以用來輔助完成事務的持久化(事務一旦完成,該事務對資料庫所做的所有修改都會持久的儲存到資料庫中)
分散式事務就是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分散式系統的不同節點之上。以上是百度百科的解釋,簡單的說,就是一次大的操作由不同的小操作組成,這些小的操作分佈在不同的伺服器上,且屬於不同的應用,分散式事務需要保證這些小操作要麼全部成功,要麼全部失敗。本質上來說,分散式事務就是為了保證不同資料庫的資料一致性
CAP由Eric Brewer在2000年PODC會議上提出[1][2],是Eric Brewer在Inktomi[3]期間研發搜尋引擎、分散式web快取時得出的關於資料一致性(consistency)、服務可用性(availability)、分割槽容錯性(partition-tolerance)的猜想:
(C) 資料一致性(consistency):也就是業務程式碼與資料庫操作的原子性
(A) 可用性(availability):所有讀寫請求在一定時間內得到響應,可終止、不會一直等待
(P) 分割槽容錯性(partition-tolerance):多個可以進行負載均衡的節點
二 分散式事物
————————————————
推薦閱讀:
https://blog.csdn.net/worn_xiao/article/details/85224681
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2902745/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式事務(一)—分散式事務的概念分散式
- 分散式事務和分散式hash分散式
- TCC和兩階段分散式事務處理的區別分散式
- 分散式事務之Spring事務與JMS事務(二)分散式Spring
- 分散式事務(3)---RocketMQ實現分散式事務原理分散式MQ
- 分散式事務(4)---RocketMQ實現分散式事務專案分散式MQ
- seata 分散式事務分散式
- 聊聊分散式事務分散式
- 理解分散式事務分散式
- 分散式事務概述分散式
- 分散式鎖和spring事務管理分散式Spring
- 分散式事務~從seata例項來學習分散式事務分散式
- 分散式事務利器——RocketMQ事務訊息的啟示分散式MQ
- PHP 微服務之 [分散式事務]PHP微服務分散式
- PHP 微服務之【分散式事務】PHP微服務分散式
- 分散式事務實戰分散式
- SpringCloud(六)分散式事務SpringGCCloud分散式
- 分散式事務總結分散式
- 分散式事務介紹分散式
- 分散式事務Saga模式分散式模式
- 事務使用中如何避免誤用分散式事務分散式
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- 分散式事務 | 使用 dotnetcore/CAP 的本地訊息表模式分散式NetCore模式
- 分散式系統(三)——分散式事務分散式
- 分散式事務處理方案,微服事務處理方案分散式
- 分散式事務之Seata的AT模型分散式模型
- 關於分散式事務的理解分散式
- 避不開的分散式事務分散式
- 淺談ORACLE的分散式事務Oracle分散式
- 搞懂分散式技術19:使用RocketMQ事務訊息解決分散式事務分散式MQ
- 分散式事務(2)---強一致性分散式事務解決方案分散式
- 微服務分散式事務元件 Seata(一)微服務分散式元件
- 分散式事務解決方案分散式
- 分散式事務 —— SpringCloud Alibaba Seata分散式SpringGCCloud
- 分散式事務保姆級教程分散式
- 談談分散式事務原理分散式
- 深度剖析分散式事務效能分散式
- 分散式事務(四)之TCC分散式