事務的5個隔離級別和7個傳播行為

2021-08-25 17:42:11 字數 1778 閱讀 1477

隔離級別:

1、isolation_default:

預設的隔離級別,使用資料庫預設的事務隔離級別 . 另外四個與 jdbc 的隔離級別相對應

2、isolation_read_uncommitted:

這是事務最低的隔離級別,它充許別外乙個事務可以看到這個事務未提交的 資料。這種隔離級別會產生髒讀,不 可重複讀和幻像讀。

3、isolation_read_committed:

保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事務未提交的資料。這種事務隔 離級別可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。

4、isolation_repeatable_read:

這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。它除了保證乙個事務不能讀取另乙個事務未提 交的資料外,還保證了避免下面的情況產生 ( 不可重複讀 ) 。

5、isolation_serializable:

這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止髒讀,不可重複讀外,還避免了幻 像讀。

事務的傳播行為:

1、propagation_required

如果存在乙個事務,則支援當前事務。如果沒有事務則開啟乙個新的事務。

2、propagation_supports

如果存在乙個事務,支援當前事務。如果沒有事務,則非事務的執行。

3、propagation_mandatory

如果已經存在乙個事務,支援當前事務。如果沒有乙個活動的事務,則丟擲異常。 當單獨呼叫 methodb 時,因為 當前沒有乙個活動的事務,則會丟擲異常 throw new illegaltransactionstateexception("transaction propagation ''mandatory'' but no existing transaction found"); 當呼叫 methoda 時, methodb 則加入 到 methoda 的事務中,事務地執行。

4、propagation_requires_new

總是開啟乙個新的事務。如果乙個事務已經存在,則將這個存在的事務掛起。

5、propagation_not_supported

總是非事務地執行,並掛起任何存在的事務。 當單獨呼叫 methodb 時,不啟用任何事務機制,非事務地執行。  

6、propagation_never

總是非事務地執行,如果存在乙個活動事務,則丟擲異常 單獨呼叫 methodb ,則非事務的執行。 呼叫 methoda 則會丟擲異常

7、propagation_nested

如果乙個活動的事務存在,則執行在乙個巢狀的事務中 .如果沒有活動事務 , 則按 transactiondefinition.propagation_required 屬性執行 這是乙個巢狀事務 , 使用 jdbc 3.0 驅動時 , 僅 僅支援 datasourcetransactionmanager 作為事務管理器。

spring事務 5種隔離級別和7種傳播行為

事務的隔離性就是指,多個併發的事務同時訪問乙個資料庫時,乙個事務不應該被另乙個事務所干擾,每個併發的事務之間要相互進行隔離。在實際開發過程中,我們絕大部分的事務都是有併發情況。多個事務併發執行,經常會操作相同的資料來完成各自的任務。在這種情況下可能會導致以下的問題 隔離級別定義了乙個事務可能受其他併...

spring 事務的5大隔離級別,7大傳播行為

isolation read uncommitted 讀未提交 isolation read committed 讀已提交 isolation repeatable read 可重複讀 isolation serializable 序列化 isolation default 預設的隔離級別 不解釋 ...

事務的隔離級別舉例 事務,事務隔離級別,傳播行為

什麼是事務 事務是訪問資料庫的乙個操作序列,資料庫應用系統通過事務集來完成對資料庫的訪問。事務的正確執行使得資料庫從一種狀態轉換為另一種狀態,事務須服從acid原則 原子性 事務要麼全部被執行,要麼全部不執行。成功則資料庫狀態發生變化,失敗則不會發生狀態轉換 一致性 使資料庫從一種正確狀態轉換成另外...