spring事務傳播

什么是事務、事務特性、事務隔離級別、spring事務傳播特性

事務傳播:

傳播種類 介紹
1.PROPAGATION_REQUIRED(需要 requierd): 如果當前有事務就支持當前事務,如果沒有就創(chuàng)建事務。
2.PROPAGATION_SUPPORTS(支持 supports): 如果當前有事務就支持當前事務,如果沒有就非事務執(zhí)行。
3.PROPAGAETION_MANDATORY(強制 mandatory): 如果當前有事務就支持當前事務,如果沒有就拋出異常。
4.PROPAGAETION_NOT_SUPPORED(不支持 not_suppored): 總是非事務執(zhí)行,如果當前有事務則掛起這個事務。
5.PROPAGATION_NEVER(永不 never): 總是非事務執(zhí)行,如果有任何活動的事務就拋出異常。
6.PROPAGATION_REQUIRED_NEW(需要,新 required_new): 總是開啟新的事務,如果已經(jīng)存在就掛起這個事務。
7.PROPAGATION_NESTED(嵌套 nested): 如果當前有事務就,在運行在嵌入事務,如果沒有就按照REQUIED去創(chuàng)建事務。

1.什么是事務:

事務是程序中一系列嚴密的操作,所有操作執(zhí)行必須成功完成,否則在每個操作所做的更改將會被撤銷,這也是事務的原子性(要么成功,要么失?。?/p>

2.事務特性:

事務特性分為四個:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持續(xù)性(Durability)簡稱ACID。

原子性(Atomicity):事務是數(shù)據(jù)庫邏輯工作單元,事務中包含的操作要么都執(zhí)行成功,要么都執(zhí)行失敗。
一致性(Consistency):事務執(zhí)行的結果必須是使數(shù)據(jù)庫數(shù)據(jù)從一個一致性狀態(tài)變到另外一種一致性狀態(tài)。當事務執(zhí)行成功后就說數(shù)據(jù)庫處于一致性狀態(tài)。如果在執(zhí)行過程中發(fā)生錯誤,這些未完成事務對數(shù)據(jù)庫所做的修改有一部分已寫入物理數(shù)據(jù)庫,這是數(shù)據(jù)庫就處于不一致狀態(tài)。
隔離性(Isolation):一個事務的執(zhí)行過程中不能影響到其他事務的執(zhí)行,即一個事務內(nèi)部的操作及使用的數(shù)據(jù)對其他事務是隔離的,并發(fā)執(zhí)行各個事務之間無不干擾。
持續(xù)性(Durability):即一個事務執(zhí)一旦提交,它對數(shù)據(jù)庫數(shù)據(jù)的改變是永久性的。之后的其它操作不應該對其執(zhí)行結果有任何影響。


3.事務的隔離級別:

事務的隔離級別也分為四種,由低到高依次分別為:read uncommited(讀未提交)、read commited(讀提交)、read repeatable(讀重復)、serializable(序列化),這四個級別可以逐個解決臟讀、不可重復讀、幻讀這幾類問題。


  1. read uncommited:是最低的事務隔離級別,它允許另外一個事務可以看到這個事務未提交的數(shù)據(jù)。
  2. read commited:保證一個事物提交后才能被另外一個事務讀取。另外一個事務不能讀取該事物未提交的數(shù)據(jù)。
  3. repeatable read:這種事務隔離級別可以防止臟讀,不可重復讀。但是可能會出現(xiàn)幻象讀。它除了保證一個事務不能被另外一個事務讀取未提交的數(shù)據(jù)之外還避免了以下情況產(chǎn)生(不可重復讀)。
  4. serializable:這是花費最高代價但最可靠的事務隔離級別。事務被處理為順序執(zhí)行。除了防止臟讀,不可重復讀之外,還避免了幻象讀。
  5. 臟讀、不可重復讀、幻象讀概念說明:
  • 臟讀:指當一個事務正字訪問數(shù)據(jù),并且對數(shù)據(jù)進行了修改,而這種數(shù)據(jù)還沒有提交到數(shù)據(jù)庫中,這時,另外一個事務也訪問這個數(shù)據(jù),然后使用了這個數(shù)據(jù)。因為這個數(shù)據(jù)還沒有提交那么另外一個事務讀取到的這個數(shù)據(jù)我們稱之為臟數(shù)據(jù)。依據(jù)臟數(shù)據(jù)所做的操作肯能是不正確的。
  • 不可重復讀:指在一個事務內(nèi),多次讀同一數(shù)據(jù)。在這個事務還沒有執(zhí)行結束,另外一個事務也訪問該同一數(shù)據(jù),那么在第一個事務中的兩次讀取數(shù)據(jù)之間,由于第二個事務的修改第一個事務兩次讀到的數(shù)據(jù)可能是不一樣的,這樣就發(fā)生了在一個事物內(nèi)兩次連續(xù)讀到的數(shù)據(jù)是不一樣的,這種情況被稱為是不可重復讀。
  • 幻象讀:一個事務先后讀取一個范圍的記錄,但兩次讀取的紀錄數(shù)不同,我們稱之為幻象讀(兩次執(zhí)行同一條 select 語句會出現(xiàn)不同的結果,第二次讀會增加一數(shù)據(jù)行,并沒有說這兩次執(zhí)行是在同一個事務中)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容