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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

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

spring事務(wù)的傳播特性--7種

REQUIRED

支持當前事務(wù),如果沒有事務(wù)會創(chuàng)建一個新的事務(wù)

SUPPORTS

支持當前事務(wù),如果沒有事務(wù)的話以非事務(wù)方式執(zhí)行

MANDATORY(強制性)

支持當前事務(wù),如果沒有事務(wù)拋出異常

REQUIRES_NEW

創(chuàng)建一個新的事物并掛起當前事務(wù)

NOT_SUPPORTED

以非事務(wù)執(zhí)行,如果當前有事務(wù),則將當前事務(wù)掛起

NEVER

以非事務(wù)執(zhí)行,如果存在事務(wù),則拋出異常

NESTED(嵌套)

如果當前存在事務(wù),則嵌套事務(wù)內(nèi)執(zhí)行,如果當前沒有事務(wù),則進行REQUIRED

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

A:方法

method A(){

sql-a--//向stu表中插入數(shù)據(jù);

method B();

}

B:方法

method(){

sql-b1--//向stu表中插入數(shù)據(jù);

int a= 1/0;

sql-b2--//向stu表中插入數(shù)據(jù);

}

1.REQUIRED解析:

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

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

2.SUPPORTS解析:

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

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

3.MANDATORY解析:

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

? 如果A沒有事務(wù),B為MANDATORY,結(jié)果:拋出異常:IllegalTransactionStateException,a的數(shù)據(jù)添加成功。

4.REQUIRES_NEW解析:

? 如果A有事務(wù),B為REQUIRES_NEW,結(jié)果:全部回滾,

? 如果A沒有事務(wù),B為REQUIRES_NEW,結(jié)果:a數(shù)據(jù)添加成功,B方法的全部回滾

5.NOT_SUPPORTED解析:

? 如果A有事務(wù),B為NOT_SUPPORTED,結(jié)果:A的結(jié)果回滾,B為不用事務(wù)執(zhí)行。

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

6.NEVER解析:

? 如果A有事務(wù),B為NEVER,結(jié)果:全部回滾,

7.NESTED:

? 如果A有事務(wù),B為NESTED,結(jié)果:全部回滾。

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

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

read uncommitted(讀未提交)

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

read committed(讀已提交)

一個事務(wù)開始時,只能看到已經(jīng)提交的事務(wù)所做的修改。兩次執(zhí)行同樣的查詢,可能會得到不同的結(jié)果

repeatable read(可重復(fù)讀)

會產(chǎn)生幻讀。當某個事物在讀取某個范圍的記錄時,另一個事務(wù)又在該范圍內(nèi)插入新的記錄,當之前的事務(wù)再次讀取該范圍的記錄時,會產(chǎn)生幻行。

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。