1.事務概念
事務是指邏輯上的一組操作,組成該操作的各個單元,要麼全部執行成功,要麼全部執行失敗; 只有全部執行成功後,事務才會提交, 若有乙個單元執行失敗,那麼所有資料都會通過回滾自動恢復.(**回滾機制:**當事務內部有乙個操作執行失敗後,那麼將會撤銷所有已完成的更新操作)
2.事務的四大特性
(1)原子性–即不可分割性,事務裡的操作要麼全執行,要麼都不執行.
(2)一致性(可串性)–事務執行前後,資料始終處於合法狀態,例如轉賬操作:執行前後,雙方的金額之和要保持一致.
(3)永續性–事務一旦執行成功提交,對資料的修改是永久性的,即使提交後出現任何故障都不會影響事務的正確性.
(4)隔離性–多個事務併發執行時,各個事務內部操作互相隔離,互不影響.
隔離性就是解決併發帶來的一系列問題;
①髒讀;可以讀取到未提交的資料,有可能是錯誤資料;避免髒讀,可以在給寫操作"加鎖",提高隔離性,降低併發性;
②不可重複讀:乙個事務內,兩次讀到的資料不一樣,:給讀操作"加鎖",即在讀取資料的時候不允許修改;
③幻讀: 多次查詢返回的結果集不同,:解決幻讀問題就進一步提公升隔離性,即完全"序列化",事務乙個接著乙個執行,此時沒有併發執行.
隔離級別:
read uncommitted:允許讀取未提交的資料,並行最大,隔離最低,有髒讀問題;
read commit:不允許讀未提交的資料,避免髒讀,存在不可重複讀問題,隔離性提高;
repeatable:避免不可重複度,存在幻讀;
serializable:嚴格序列執行.
1.事務該如何實現?
事務的實現基於資料庫儲存引擎,事務的隔離性通過加鎖實現; 一致性,原子性,永續性通過事務日誌實現.
(儲存引擎:儲存檔案的各種不同的技術和相關功能稱為資料庫儲存引擎; 事務日誌: 不同於資料庫檔案的檔案,資料的更改都儲存在事務日誌裡.)
2.分布式系統如何實現事務?
分布式事務用於在分布式系統中保證不同節點的資料的一致性 ;
主要是xa分布式協議,主要包含兩階段提交(2pc)和三階段提交(3pc);
xa協議包含兩個角色:事務協調者和事務參與者;
2pc 過程:
第一階段 事務協調者會向參與者傳送prepare(準備)請求;各個節點收到指令後開始執行事務有關的操作,完成之後,暫不提交,而是向呼叫者返回"完成",當呼叫者接收到所有完成訊息後進入第二階段;
第二階段 : 呼叫者向所有參與者傳送"commit"請求,然後參與者開始提交,提交成功後,釋放鎖資源,然後會向呼叫者返回"完成",當呼叫者接收到所有"完成"訊息,分布式事務便是成功了.
3pc在兩階段提交基礎上增加了cancommit階段,並增加了超時機制,一旦事務參與者長時間沒有收到協調者的commit請求,便會自動進行本地提交.
分布式事務 分布式事務的實現
如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...
事務 分布式事務
事務 邏輯上的一組操作,要麼都成功要麼都失敗 事務的四個特性 acid 原子性,一致性,隔離性,永續性 事務的隔離級別 讀未提交 產生髒讀 讀已提交 不可重複讀 可重複讀 幻讀 mysql預設 序列化讀 效能最低 傳播行為 7個 七種傳播行為 required 支援當前事務,如果不存在,就新建乙個 ...
分布式 分布式事務
是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...