spring cloud/boot 使用事務以及多資料來源

來源:互聯網
上載者:User

一、事務四大特徵

考試面試要用,原子、一致、隔離和持久

1.原子

try{
      doA()
      doB()
      doC()
      ...
}catch(AnyException){
    unDoA(),unDoB(),unDoC()
}

2.一致

一致就涉及到事務了,定義為事務結束後,所有的人拿到的資料、索引都應該是一致的。

個人理解:就是原子操作完之後,所有的人拿到的資料、索引都應該是一致的。

3.隔離

保證不同的事務相互獨立、透明地執行。
級聯廢棄:如果事務T1讀到了事務T2未提交的資料,如果T2提
交失敗,那麼T1也要復原。

隔離等級:
Read Uncommitted(讀未提交)
Read Committed(讀已提交)
Repeatable Read(可重複讀)(MySQL預設隔離等級)
Serializable(序列化)



髒讀、不可重複讀取、幻讀

髒讀:一事務對資料進行了增刪改,但未提交,有可能復原,另一事務卻讀取了未提交的資料。

不可重複讀取: 一事務對資料進行了更新或刪除操作,另一事務兩次查詢的資料不一致。 

幻讀: 一事務對資料進行了新增操作,另一事務兩次查詢的資料不一致。

髒讀:主要是針對列內容的變化。

幻讀:主要是針對行數的變化


二、分散式交易(流行的解決方案)

指會涉及到操作多個資料庫的事務

1. 涉及多個系統,多個資料來源,多個Connection的資料庫操作。

2.怎麼保證一致性。 

兩階段交易認可、三階段提交、事件模型

具體方案的實現待補充

三、Spring交易管理 @Transacational

1、Isolation(隔離性):
DEFAULT:  使用資料庫設定
READ_UNCOMMITTED: 會出現髒讀、不可重複讀取、幻讀 
READ_COMMITTED: 會出現不可重複讀取、幻讀問題
REPEATABLE_READ: 會出幻讀
SERIALIZABLE: 保證所有的情況不會發生

2、propagation (傳播性):

requeired
supports
requried_new
not supported
mandatory
never
nested

3、程式碼分析

public class TxTest{   @Transacational   public void foo(){       bar();   }   @Transacational(propagation=”required_new”)   public void bar(){   }}

調用foo()方法只會建立當前方法的事務,方法裡面bar()即使定義required_new也不會建立新的事務。

public class TxTest{    @Autowird    private TxTest2 txTest2;   @Transacational   public void foo(){       txTest2.bar();   }}public class TxTest2{ @Transacational(propagation=”required_new”)    public void bar(){  }}
調用foo()方法會建立當前方法的事務,運行到txTest2.bar()時會建立一個新的事務。







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.