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...