什么是事務衡怀、事務特性澄惊、事務隔離級別撒穷、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): | 總是開啟新的事務慌随,如果已經存在就掛起這個事務芬沉。 |
7.PROPAGATION_NESTED(嵌套 nested): | 如果當前有事務就,在運行在嵌入事務阁猜,如果沒有就按照REQUIED去創(chuàng)建事務丸逸。 |
1.什么是事務:
事務是程序中一系列嚴密的操作,所有操作執(zhí)行必須成功完成剃袍,否則在每個操作所做的更改將會被撤銷黄刚,這也是事務的原子性(要么成功,要么失斆裥А)憔维。
2.事務特性:
事務特性分為四個:原子性(Atomicity)、一致性(Consistency)畏邢、隔離性(Isolation)业扒、持續(xù)性(Durability)簡稱ACID。
原子性(Atomicity):事務是數據庫邏輯工作單元舒萎,事務中包含的操作要么都執(zhí)行成功程储,要么都執(zhí)行失敗。
一致性(Consistency):事務執(zhí)行的結果必須是使數據庫數據從一個一致性狀態(tài)變到另外一種一致性狀態(tài)。當事務執(zhí)行成功后就說數據庫處于一致性狀態(tài)章鲤。如果在執(zhí)行過程中發(fā)生錯誤摊灭,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這是數據庫就處于不一致狀態(tài)败徊。
隔離性(Isolation):一個事務的執(zhí)行過程中不能影響到其他事務的執(zhí)行帚呼,即一個事務內部的操作及使用的數據對其他事務是隔離的,并發(fā)執(zhí)行各個事務之間無不干擾集嵌。
持續(xù)性(Durability):即一個事務執(zhí)一旦提交萝挤,它對數據庫數據的改變是永久性的御毅。之后的其它操作不應該對其執(zhí)行結果有任何影響根欧。
3.事務的隔離級別:
事務的隔離級別也分為四種,由低到高依次分別為:read uncommited(讀未提交)端蛆、read commited(讀提交)凤粗、read repeatable(讀重復)、serializable(序列化)今豆,這四個級別可以逐個解決臟讀嫌拣、不可重復讀、幻讀這幾類問題呆躲。
- read uncommited:是最低的事務隔離級別异逐,它允許另外一個事務可以看到這個事務未提交的數據。
- read commited:保證一個事物提交后才能被另外一個事務讀取插掂。另外一個事務不能讀取該事物未提交的數據灰瞻。
- repeatable read:這種事務隔離級別可以防止臟讀,不可重復讀辅甥。但是可能會出現幻象讀酝润。它除了保證一個事務不能被另外一個事務讀取未提交的數據之外還避免了以下情況產生(不可重復讀)。
- serializable:這是花費最高代價但最可靠的事務隔離級別璃弄。事務被處理為順序執(zhí)行要销。除了防止臟讀,不可重復讀之外夏块,還避免了幻象讀疏咐。
- 臟讀、不可重復讀脐供、幻象讀概念說明:
- 臟讀:指當一個事務正字訪問數據浑塞,并且對數據進行了修改,而這種數據還沒有提交到數據庫中患民,這時缩举,另外一個事務也訪問這個數據,然后使用了這個數據。因為這個數據還沒有提交那么另外一個事務讀取到的這個數據我們稱之為臟數據仅孩。依據臟數據所做的操作肯能是不正確的托猩。
- 不可重復讀:指在一個事務內,多次讀同一數據辽慕。在這個事務還沒有執(zhí)行結束京腥,另外一個事務也訪問該同一數據,那么在第一個事務中的兩次讀取數據之間溅蛉,由于第二個事務的修改第一個事務兩次讀到的數據可能是不一樣的公浪,這樣就發(fā)生了在一個事物內兩次連續(xù)讀到的數據是不一樣的,這種情況被稱為是不可重復讀船侧。
- 幻象讀:一個事務先后讀取一個范圍的記錄欠气,但兩次讀取的紀錄數不同,我們稱之為幻象讀(兩次執(zhí)行同一條 select 語句會出現不同的結果镜撩,第二次讀會增加一數據行预柒,并沒有說這兩次執(zhí)行是在同一個事務中)