Spring事務的一些特性

事務的四大特徵

1.原子性:一個事務中全部對數據庫的操做是一個不可分割的操做序列,要麼全作要麼全不作mysql

2.一致性:數據不會由於事務的執行而遭到破壞sql

3.隔離性:一個事物的執行,不受其餘事務的干擾,即併發執行的事物之間互不干擾數據庫

4.持久性:一個事物一旦提交,它對數據庫的改變就是永久的併發

 

五個隔離級別

1.default:默認的事務隔離級別,跟具體的數據有關,mysql默認的事務隔離級別是repeatable_read事務

2.read_uncommitted: 讀未提交,一個事務能夠感知或者操做另一個未提交的事務,可能會出現髒讀、不可重複讀、幻讀資源

3.read_committed:讀已提交,一個事務只能感知或者操做另外一個已經提交的事務,可能會出現不可重複讀、幻讀it

4.repeatable_read:可重複讀,可以避免髒讀,不可重複讀,不能避免幻讀io

4.serializable:串行化,隔離級別最高,消耗資源最低,代價最高,可以防止髒讀, 不可重複讀,幻讀。table

 

七個傳播特性

一、Propagation.REQUIRED數據

調用方已經存在事務,則加入到同一個事務中運行,不然,自啓一個事務    

二、Propagation.REQUIRES_NEW

不管什麼時候自身都會開啓新事務

三、Propagation.SUPPORTS

調用方存在事務,則加入到同一個事務中運行,若不存在事務,則以非事務的方式運行

四、Propagation.NOT_SUPPORTED

調用方存在事務,則會被掛起,直到被調用方運行完畢後,事務恢復。

五、Propagation.MANDATORY

調用方存在事務,則加入到同一個事務中運行,若不存在,則拋出異常

六、Propagation.NEVER

調用方存在事務,則拋出異常

七、Propagation.NESTED

若調用方存在事務,則運行一個嵌套事務,若調用方不存在事務,則以Propagation.REQUIRED的方式運行,即開啓一個新的事務

相關文章
相關標籤/搜索