事務隔離機制(尚學堂)

2022-03-27 11:32:56 字數 1155 閱讀 2275

事務的四個特性:acid

atomic(原子性)、consistency(一致性)、isolation(隔離性)、durability(永續性)

事務併發時可能出現的問題:

第一類丟失更新(lost update)   (可以忽略)

髒讀(dirty read)

不可重複讀(non-repeatable read)

第二類丟失更新(second lost update problem)(不可重複讀的特殊情況)

幻讀(phantom read)

為了解決上述問題,資料庫提供了四種事務隔離機制

1、read-uncommitted        會出現dirty read,phantom-read,non-repeatable read

2、read-committed            不會出現dirty read,因為只有另乙個事務提交才會讀出結果,但仍然                                              會出現non-repeatable read和phantom read。

4、repeatable read

8、serializable                   不會出現任何問題

設定hibernate的事務隔離級別

1、hibernate.connection.isolation=2    為了考慮效率問題一般設定成2

2、用悲觀鎖解決repeatable read問題(依賴於資料庫的鎖)

1) select ... for update

2) load(xx.class,i,lockmode.upgrade)

a) lockmode.none 無鎖,transaction結束時,自動切換到此模式

b) lockmode.read 在查詢的時候 hibernate會自動獲取鎖

c) lockmode.write   insert update hibernate會自動取消鎖

d) 以上3種鎖的模式,是hibernate內部使用的

3、hibernate[jpa] 樂觀鎖定(readcommitted)

1) @version  樂觀鎖使用版本控制

事務隔離機制

五年前在論壇上有過一次提問,如下 下面兩個問題的答案就是資料庫的事務隔離機制。資料庫針對外部的併發請求,也是要考慮資源搶占問題的,所以資料庫針對同一記錄的寫請求,也是要加鎖的!最簡單的方式就是針對每個請求都加鎖,全部序列,這樣肯定不會有問題。但這樣效能很低,所以db將鎖分為了讀鎖和寫鎖,也就是常說的...

python之父北京尚學堂 北京尚學堂 主頁

你輸入的郵件位址曾經通過 啟用了本站帳號,請使用 帳號直接登入。課程習題 提示請選擇乙個答案 提交檢視正確答案 下一題 0 data index data name 課程進度 開課時間待定 開課 進行到第 周 已結束 分 分 檢視證書 開啟奮鬥模式 已開啟奮鬥模式 申請證書 已申請證書,成績合格即頒...

尚學堂 oracle筆記

sql plus是oracle的乙個客戶端 cmd sqlplus 開啟瀏覽器http localhost 5560 isqlplus cmd cd c oracle product 10.2.0 db 1 bin sqlplus alter user scott account c oracle ...