mysql事務和spring事務傳播型別

2021-09-26 05:24:46 字數 1038 閱讀 4160

1.事務特性asid

1)a原子性:事務中的操作要麼全部執行要麼全部不執行(執行中有異常會回滾事務前狀態)

2)s一致性:事務執行完畢後資料要保持一致

舉例:事務執行前a、b的存款都是100,事務內容是a轉賬b,則事務執行完成之後,需要滿足a和b的存款和還是200。

3)隔離性:不同的事物之間不會干擾

4)永續性:事務一旦提交,對資料庫中資料是永久性的。

2.髒讀、不可重複讀、幻讀

1)髒讀:乙個事務處理過程中,讀取了另乙個事務還未提交的資料。

2)不可重複讀:乙個事務處理過程中,對同一資料的多次查詢得到不同的結果,這是由於另乙個事務在多次查詢間隔修改了這個資料。

3)幻讀:乙個事務處理過程中,讀取了另乙個事務新增的資料。

3.四種事務隔離級別

1)讀未提交:乙個事務可以讀取到另外個還未提交的資料

產生問題:髒讀、不可重複讀、幻讀

2)讀已提交:乙個事務可以讀取到另外個已提交的資料

產生問題:不可重複讀、幻讀

3)可重複讀:乙個事務能夠對同一記錄進行重複性修改和讀取,讀取的資料始終一致(mysql的`預設事務隔離級別)

產生問題:幻讀

4)序列化:多個事務以序列化serializable的方式執行,自然不會產生併發事務問題。

產生問題:效率特別低。

4.spring的7種事務傳播機制

1) required :如果當前沒有事務,就建立乙個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。

2)required_new : 無論當前有沒有事務都會建立乙個新事物

3)nested :如果當前存在事務則在巢狀內事務執行,如果沒用則建立乙個新事務

4)supports :如果當前存在事務,則加入該事務,如果沒有事務則以非事務執行

5)not_supports :以非事務執行,如果當前存在事務,則把事務掛起

6)mandatory :如果當前存在事務,則加入該事務,如果沒有則丟擲異常

7)never:以非事務執行,如果當前存在事務,則丟擲異常

mysql 設定唯讀事務 Spring 唯讀事務

transactional readonly true 這東西不叫唯讀事務,它只是建立了乙個唯讀的資料庫連線。transactional裡面還有個引數,叫isolation這個才是控制隔離級別的。spring提供了5種事務隔離級別予以解決 1 default預設級別 default為資料來源 資料庫...

spring事務管理(宣告式事務和程式設計式事務)

spring的事務管理分為 宣告式事務和程式設計式事務 spring對事務管理通常分為三部分 datasource transactionmanager和 機制這三部分,無論哪種配置方式,一般變化的只是 機制這部分。hibernate.dialect org.hibernate.dialect.my...

spring事務管理(宣告式事務和程式設計式事務)

spring hibernate.dialect org.hibernate.dialect.mysqldialect hibernate.show sql true hibernate.hbm2ddl.auto update 2.spring事務管理 前面一部分主要配置資料來源 datasourc...