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

事物隔離級別

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

SERIALIZABLE 序列化

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

REPEATABLE READ 可重復讀

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

READ COMMITED 讀提交

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

READ UNCOMMITED 讀未提交

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

事物傳播屬性

REQUIRED

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

REQUIRES_NEW

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

SUPPORTS

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

NOT_SUPPORTED

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

MANDATORY

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

NESTED

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

NEVER

  • 在無事物環境下運行,如存在事物則拋出異常
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容