1 隔離級別 spring事務管理

2021-05-23 06:36:51 字數 1049 閱讀 4630

資料庫提供了四種事務隔離級別, 不同的隔離級別採用不同的鎖類開來實現.

在四種隔離級別中, serializable的級別最高, read uncommited級別最低.

大多數資料庫的預設隔離級別為: read commited,如sql server , oracle.

少數資料庫預設的隔離級別為repeatable read, 如mysql innodb儲存引擎

)read commited :讀已提交的資料(會出現不可重複讀,幻讀)

repeatable read :可重複讀(會出現幻讀)

serializable :序列化

丟失更新:

當兩個或多個事務選擇同一行,然後基於最初選定的值更新該行時,會發生丟失更新問題。每個事務都不知道其它事務的存在。最後的更新將重寫由其它事務所做的更新,這將導致資料丟失。   

例:事務a和事務b同時修改某行的值,

1.事務a將數值改為1並提交

2.事務b將數值改為2並提交。

這時資料的值為2,事務a所做的更新將會丟失。

解決辦法:對行加鎖,只允許併發乙個更新事務。

髒讀:乙個事務讀到另乙個事務未提交的更新資料 例:

不可重複讀:在同乙個事務中,多次讀取同一資料,返回的結果有所不同. 換句話說就是,後續讀取可以讀到另乙個事務已提交的更新資料. 相反"可重複讀"在同一事務多次讀取資料時,能夠保證所讀資料一樣,也就是後續讀取不能讀到另一事務已提交的更新資料. 例:

1.在事務1中,mary 讀取了自己的工資為1000,操作並沒有完成

2.在事務2中,這時財務人員修改了mary的工資為2000,並提交了事務.

3.在事務1中,mary 再次讀取自己的工資時,工資變為了2000

解決辦法:如果只有在修改事務完全提交之後才可以讀取資料,則可以避免該問題。

幻讀:乙個事務讀取到另乙個事務已提交的insert資料.

Spring事務管理 隔離級別

隔離級別 定義的是事務在資料庫讀寫方面的控制範圍。注意 較低的隔離級別會增加併發效能,但同時也會降低資料的正確性。較高的隔離級別會增加資料的正確性,但也可能會對併發效能產生負面影響。提供了4種隔離級別 個人理解 資料庫中的事務被隔離的程度 1 isolation read uncommitted,未...

spring 事務管理與資料庫隔離級別

1遇到問題 spring 事務中儲存了物件後 啟動乙個執行緒獲取物件無效 public void postdispatchdoc dispatchdoc entity catch exception e public void run catch exception e 寫web專案的時候,我們一般...

Spring事務管理(1)

第三章 事務的api介紹 相關鏈結 事務指的是邏輯上的一組操作,這組操作要麼全部成功,要麼全部失敗。事務的4大特性 原子性 一致性 隔離性 永續性 原子性 指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性 指事務前後資料的完整性必須保持一致。隔離性 指多個使用者併發訪問資...