數據庫事務4種隔離級別及7種傳播行爲

1、隔離級別:數據庫

數據庫事務的隔離級別有4個,由低到高依次爲Read uncommitted、Read committed、Repeatable read、Serializable,這四個級別能夠逐個解決髒讀、不可重複讀、幻讀這幾類問題。spa

1. ISOLATION_READ_UNCOMMITTED:這是事務最低的隔離級別,它充許令外一個事務能夠看到這個事務未提交的數據。
      這種隔離級別會產生髒讀,不可重複讀和幻像讀。
2. ISOLATION_READ_COMMITTED:保證一個事務修改的數據提交後才能被另一個事務讀取。另一個事務不能讀取該事務未提交的數據
3. ISOLATION_REPEATABLE_READ:這種事務隔離級別能夠防止髒讀,不可重複讀。可是可能出現幻像讀。
      它除了保證一個事務不能讀取另外一個事務未提交的數據外,還保證了避免下面的狀況產生(不可重複讀)。
4. ISOLATION_SERIALIZABLE:這是花費最高代價可是最可靠的事務隔離級別。事務被處理爲順序執行。
      除了防止髒讀,不可重複讀外,還避免了幻像讀。blog

注:隔離級別能夠認爲是4個,也能夠認爲是5個,4個就是上面4個,對應着JDBC的隔離級別。若是是若是,就還有一個default,是默認的隔離級別,遵循傳播屬性。事務

 

1、傳播屬性:it

PROPAGATION_REQUIRED -- 支持當前事務,若是當前沒有事務,就新建一個事務。這是最多見的選擇。
PROPAGATION_SUPPORTS -- 支持當前事務,若是當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY -- 支持當前事務,若是當前沒有事務,就拋出異常。
PROPAGATION_REQUIRES_NEW -- 新建事務,若是當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED -- 以非事務方式執行操做,若是當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER -- 以非事務方式執行,若是當前存在事務,則拋出異常。
PROPAGATION_NESTED -- 若是當前存在事務,則在嵌套事務內執行。若是當前沒有事務,table

相關文章
相關標籤/搜索