日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的传播特性_spring事务传播特性和mysql事务隔离级别

發布時間:2023/12/10 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的传播特性_spring事务传播特性和mysql事务隔离级别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring事務的傳播特性--7種

REQUIRED

支持當前事務,如果沒有事務會創建一個新的事務

SUPPORTS

支持當前事務,如果沒有事務的話以非事務方式執行

MANDATORY(強制性)

支持當前事務,如果沒有事務拋出異常

REQUIRES_NEW

創建一個新的事物并掛起當前事務

NOT_SUPPORTED

以非事務執行,如果當前有事務,則將當前事務掛起

NEVER

以非事務執行,如果存在事務,則拋出異常

NESTED(嵌套)

如果當前存在事務,則嵌套事務內執行,如果當前沒有事務,則進行REQUIRED

案例:有事務指的是@Transactional(propagation = Propagation.REQUIRED),也就是默認事務

A:方法

method A(){

sql-a--//向stu表中插入數據;

method B();

}

B:方法

method(){

sql-b1--//向stu表中插入數據;

int a= 1/0;

sql-b2--//向stu表中插入數據;

}

1.REQUIRED解析:

? 如果A方法上有事務,B方法沒有事務,結果--一條數據都添加不進去(A方法有了事務,B方法不管有沒有事務,都是A事務執行。)

? 如果A方法沒有事務,B方法有事務,則a的數據會添加成功,B的回滾。

2.SUPPORTS解析:

? 如果A方法有事務,B方法是SUPPORTS,結果為:一條都添加不進去。(A有事務,B是支持事務,B也會使用A的事務)。

? 如果A沒有事務,B為SUPPORTS,結果:a的sql和b1的sql會執行成功(就是沒有事務)表里會有a,b1的數據

3.MANDATORY解析:

? 如果A有事務,B為MANDATORY,結果:一條都加不進去(A有事務,B為強制事務,會加入A的事務)

? 如果A沒有事務,B為MANDATORY,結果:拋出異常:IllegalTransactionStateException,a的數據添加成功。

4.REQUIRES_NEW解析:

? 如果A有事務,B為REQUIRES_NEW,結果:全部回滾,

? 如果A沒有事務,B為REQUIRES_NEW,結果:a數據添加成功,B方法的全部回滾

5.NOT_SUPPORTED解析:

? 如果A有事務,B為NOT_SUPPORTED,結果:A的結果回滾,B為不用事務執行。

? 如果A沒有事務,B為NOT_SUPPORTED,結果,全部不用回滾(就是非事務)

6.NEVER解析:

? 如果A有事務,B為NEVER,結果:全部回滾,

7.NESTED:

? 如果A有事務,B為NESTED,結果:全部回滾。

? 如果A沒有事務,B為NESTED,結果:a添加成功,b失敗回滾(也就是以事務執行)

Mysql的事務隔離級別(4種)

read uncommitted(讀未提交)

事務中的修改,即使沒有提交也被其他事務讀取到,這種情況也叫臟讀。

read committed(讀已提交)

一個事務開始時,只能看到已經提交的事務所做的修改。兩次執行同樣的查詢,可能會得到不同的結果

repeatable read(可重復讀)

會產生幻讀。當某個事物在讀取某個范圍的記錄時,另一個事務又在該范圍內插入新的記錄,當之前的事務再次讀取該范圍的記錄時,會產生幻行。

serializable(可串行化,默認最高級別)

總結

以上是生活随笔為你收集整理的mysql的传播特性_spring事务传播特性和mysql事务隔离级别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。