spring事物管理

事物

1、事物介紹

      事物事邏輯上的一組操作,組成這組操作的各個邏輯元素單元,要麼一起成功,要麼一起失敗。

1.1 事物的特性

    原子性(atomicity):一個事物事一個不可分割的工作單位。

    一致性(consistency):事物必須是數據從一個一致性狀態變成到另一個一致性狀態。

    隔離性(isolation):一個事物的執行不能被其他事物干擾,一個事物內部的操作及使用的數據對併發的其他事物事隔離的,併發執行的各個事物之間不能互相干擾。

    持久性(durabilety):一個事物一旦提交,他對數據庫中的改變就應該是永久的。

1.2 不考慮隔離性引發的安全問題

   髒讀:

     髒讀就是指當一個事務正在訪問數據,並且對數據進行了修改,而這種修改還沒有提交到數據庫中,這時,另外一個事務也訪問這個數據,然後使用了這個數據。

   不可重複讀:

          是指在一個事務內,多次讀同一數據。在這個事務還沒有結束時,另外一個事務也訪問update該同一數據。那麼,在第一個事務中的兩次讀數據之間,由於第二個事務的修改,那麼第一個事務兩次讀到的的數據可能是不一樣的。這樣就發生了在一個事務內兩次讀到的數據是不一樣的,因此稱爲是不可重複讀。(即不能讀到相同的數據內容)

   幻讀:

         一個事務讀到了另一個事務已提交的insert數據,導致多次查詢結果不一樣。

1.3 設置事物隔離級別

讀未提交(ReadUncommitted):髒讀,不可重複讀,幻讀都有可能發生

讀已提交(ReadCommitted):避免髒讀。但是不可重複讀和幻讀有可能發生

可重複讀(RepetableRead):避免髒讀和不可重複讀。但是幻讀有可能發生

串行化(Serializable):避免髒讀、不可重複讀、幻讀。

可能出現 ×不可能出現

事務隔離級別

髒讀

不可重複讀

幻讀

讀未提交

讀已提交

×

可重複讀

×

×

串行化

×

×

×




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