隔離級別:
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原則 原子性 事務要麼全部被執行,要麼全部不執行。成功則資料庫狀態發生變化,失敗則不會發生狀態轉換 一致性 使資料庫從一種正確狀態轉換成另外...