1、事務
數據庫在讀取的記錄上加共享鎖,驗證是否可以讀取數據,直到事務提交,鎖才能釋放,其他用戶可以讀取數據,但是不能修改。可以保證在同一事務中前后兩次讀取記錄是一致的。當必須要信任所有讀取的記錄,保證記錄不被修改,我們可以采用repeatable read,例如統計數據(銀行賬號的余額情況)、關聯查詢多個表等。 5)Last Committed Read(讀取最后提交的數據) 這是一種樂觀鎖,它解決了Commited Read的不足,因為Commited Read在記錄被鎖時,其它進程需要等待。 這種隔離級別常被用在WEB應用系統中,例如在電子商務系統中,可以選擇商品添加到購物籃中,但是此時后臺可能你正在對商品的價格進行更新,當再次檢查的時候,可能發現商品的價格已經發生變化。 設置語句參考如下:
相對Committed Read而言,提高了并發量和系統的吞吐量。可以通過ONCONFIG參數設置為隔離級別:USELASTCOMMITTED。表需要設置為行級鎖,不能是頁級鎖。 6)幾種隔離級別的比較 隔離級別 臟讀? 不可重復讀? 幻影讀? Dirty Read Yes Yes Yes Last Commited Read No Yes Yes Commited Read No Yes Yes Cursor Stability No No Yes Repeatable Read No No No 5、設置事務/會話的鎖模式 1)不等待鎖的釋放 為默認的鎖模式,如果數據庫對象被鎖,則立即返回錯誤。錯誤消息參考如下: