Mysql事務隔離級別和傳播機制

事務的特性

原子性:事務不可分割,組成事務的各個邏輯不可分割

一致性:事務執行的前後,數據完整保持一致

隔離性:事務執行不應該受到其他事務的干擾

持久性:事務一旦結束,數據就持久化到數據庫中

如果不考慮事務的隔離性,會引發一些安全問題:

髒讀: 一個事務讀取到另一個事務未提交的數據。

不可重複讀:一個事務讀取到另一個事務提交的更新的數據,導致多次查詢結果不一致。

幻讀:一個事務讀取到另一個事務提交的新增的數據,導致多次查詢的結果不一致。

 

Mysql數據庫有4種隔離級別7種傳播行爲

事務的隔離級別:

read uncommitted(讀取未提交內容):可能發生髒讀,不可重複讀,幻讀。

read committed(讀取已提交內容):避免髒讀,但可能發生不可重複讀和紀讀

repeatable read(可重讀):避免髒讀和不可重複讀,但可能幻讀

serializable(可串行化):避免髒讀,不可重複讀,幻讀

傳播行爲:

propagation_required:如果當前沒有事務,就創建一個新事務;如果當前存在事務,就用當前事務。

propagation_nested:如果當前存在事務,則在嵌套事務內執行;如果當前沒有事務,則是required的操作

propagation_supports:如果當前有事務,就加入該事務;如果當前沒有事務,就以非事務執行

propagation_madatory:如果當前有事務,就加入該事務;如果當前沒有事務,就拋出異常

propagation_requires_new:無論當前有沒有事務,都創建新事務

propagation_not_supported:以非事務方式執行操作,如果當前有事務,就把當前事務掛起

propagation_never:以非事務方式執行,如果當前有事務,則拋出異常

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章