Sql server臟讀、更新丟失、不可重復讀、幻象讀問題及解決方案


 1、臟讀:一個事務讀到另外一個事務還沒有提交的數據。
解決方法:把事務隔離級別調整到READ COMMITTED,即SET TRAN ISOLATION LEVEL READ COMMITTED。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果,因為此時事務以已經把自己的更改ROLLBACK了,所以事務二可以返回正確的結果。

 

 

2、更新丟失:

 

 

3、 不可重復讀:一個事務先后讀取同一條記錄,但兩次讀取的數據不同。
解決方法:把事務隔離級別調整到REPEATABLE READ。使用SET TRAN ISOLATION LEVEL REPEATABLE READ。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果。

 

 

4、幻象讀:一個事務先后讀取一個范圍的記錄,但兩次讀取的紀錄數不同。
解決方法:把事務隔離級別調整到SERIALIZABLE。使用SET TRAN ISOLATION LEVEL SERIALIZABLE。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM