什么是臟讀和幻讀


臟讀
臟讀是指當一個事務正在訪問數據,並且對數據進行了修改。而這種修改還沒有提交到數據庫中,這時,另外一個事務也訪問了這個數據,然后使用了這個數據。

例子:
1.財務將董震的工資從1000修改成了8000(但未提交事務)
2.此時應董震讀取自己的工資發現自己的工資變成了8000,高興的上蹦下跳
3.接着財務發現操作有誤,回滾了事務,此時董震的工資又變成了1000,此時董震記取的工資8000是一個 臟數據


幻讀
幻讀是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的數據進行了修改,這種修改涉及到了表中的全部數據行。同時,第二個事務也修改了這個表中的數據,這種修改是向表中插入一行新數據。那么,以后就會發生操作第一個事務的用戶發現表中還有沒有修改的數據行,就好像發生了幻覺一樣。

例子:
目前公司員工工資為1000的有10人
1.事務1讀取所有的員工工資為1000的員工。
2.這時事務2向employee表插入了一條員工紀錄,工資也為1000
3.事務1再次讀取所有工資為1000的員工,共讀取了11條記錄。
解決方法:如果在操作事務完成數據處理之前,任何其它事務都不可以添加新數據。


免責聲明!

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



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