事務的四個特性: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 ...