事物隔離級別以及事物傳播屬性

事物隔離級別

  • 事物隔離級別是爲解決髒讀、幻讀、不可重複讀
  • 髒讀:尚未被確定提交的數據被其他事物讀取到
  • 幻讀:進行select時間點上的數據與之後實際的情況不同,即會新增數據
  • 不可重複讀: 同一數據同時被多個事物讀取,多個事物可對同一數據同時進行修改,造成數據前後不一致。

SERIALIZABLE 序列化

  • 最高級別的事物隔離級別
  • 事物按照順序執行: 解決了髒讀、幻讀、不可重複讀

REPEATABLE READ 可重複讀

  • 在進行Select時的數據將不可進行修改,但是數據可以新增
  • 解決了髒讀、不可重複讀,會出現幻讀

READ COMMITED 讀提交

  • 事物在讀取數據後立即釋放了讀鎖,導致其他事物可以修改此數據。
  • 解決髒讀,會出現幻讀、不可重複讀

READ UNCOMMITED 讀未提交

  • 數據在未提交時可以被其他事物讀取
  • 會出現 髒讀、幻讀、不可重複讀

事物傳播屬性

REQUIRED

已存在一個事務,則加入該事務,否則創建一個新的事務.
Spring默認的傳播行爲

REQUIRES_NEW

  • 創建新的事物,如果已經存在一個事物則掛起此事物、

SUPPORTS

  • 如果存在以存在一個事物且則加入此事物,否則在無事物模式下運行

NOT_SUPPORTED

  • 在無事物模式下運行,如果存在事物則掛起該事物

MANDATORY

  • 強制使用事物,不存在事物則拋出異常

NESTED

  • 當前存在事務,則將該方法運行在嵌套的事務中。被嵌套的事務可以從當前事務中單獨的提交和回滾。如不存在事務,則創建新的事務

NEVER

  • 在無事物環境下運行,如存在事物則拋出異常
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章