數據庫開發四:JDBC數據庫開發進階一(事務的隔離級別)

文章相關視頻出處:https://developer.aliyun.com/lesson_1698_13612#_13612

目錄

髒讀概念舉例

不可重複讀概念舉例

幻讀概念舉例

事務四大隔離級別


併發事務問題
·髒讀:讀取到另一個事務的未提交更新數據
·不可重複讀:兩次讀取不一致
·幻讀:讀到另一事務已提交數據

髒讀概念舉例

事務1:張三給李四轉賬100元
事務2:李四查看自己的賬戶
·t1:事務1:開始事務
·t2:事務1:張三給李四轉賬100元
·t3:事務2:開始事務
·t4:事務2:李四查看自己的賬戶,看到賬戶多出100元(髒讀)
·t5:事務2:提交事務
·t6:事務1:回滾事務,回到轉賬之前的狀態

不可重複讀概念舉例

事務1:酒店查看兩次1048號房間狀態
事務2:預定1048房間
·t1:事務1:開始事務
·t2:事務1:查看1048號放假狀態爲空閒
·t3:事務2:開始事務
·t4:事務2:預定1048號房間
·t5:事務2:提交事務
·t6:事務1:再次查看1048號房間狀態爲使用
·t7:事務1:提交事務
對同一記錄的兩次查詢結果不一致(從控制角度來看,只需鎖住滿足條件的記錄)

幻讀概念舉例

事務1:對酒店房間預訂記錄兩次統計
事務2:添加一條預定房間記錄
·t1:事務1:開始事務
·t2:事務1:統計預定記錄100條
·t3:事務2:開始事務
·t4:事務2:添加一條預定房間記錄
·t5:事務2:提交事務
·t6:事務1:再次統計預定記錄爲101條
·t7:事務1:提交事務
對同一表的兩次查詢不一致(從控制角度來看,要鎖住滿足條件相似的記錄)

事務四大隔離級別

1 Serializable 串行化(基本不用)
·不會出現任何併發問題
·性能最差
2 Repeatable read 可重複讀(mysql默認隔離級別)
·防止髒讀和不可重複讀,不能處理幻讀
·性能比 Serializable 好
3 Read committed 讀已提交數據(oracle默認隔離級別)
·防止髒讀,沒有處理不可重複讀和幻讀
·性能比 Repeatable read好
4 Read uncommitted 讀未提交數據(基本不用)
·可能出現任何事務併發問題
·性能最好

select @@tx_isolation查詢數據庫事務隔離級別

jdbc設置隔離級別connection.setTransactionIsolation(int level)

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