mysql之臟讀、不可重復(fù)讀、幻讀的區(qū)別及說明
mysql臟讀、不可重復(fù)讀、幻讀的區(qū)別
臟讀(Drity Read)
某個事務(wù)已更新一份數(shù)據(jù),另一個事務(wù)在此時讀取了同一份數(shù)據(jù),由于某些原因,
前一個RollBack了操作,則后一個事務(wù)所讀取的數(shù)據(jù)就會是不正確的。
例如:
- 一開始小明將數(shù)據(jù)A修改成了B,之后這個時候小紅讀取了B
- 但是由于小明將數(shù)據(jù)回滾了,修改成了A
- 那么在這個時間點,小紅拿的數(shù)據(jù)就是錯誤的了,正確的數(shù)據(jù)應(yīng)該為A
不可重復(fù)讀(Non-repeatable read)
在一個事務(wù)的兩次查詢之中數(shù)據(jù)不一致,這可能是兩次查詢過程中間插入了一個事務(wù)更新的原有的數(shù)據(jù)。
例如:
- 小明一開始查詢數(shù)據(jù)時A,但是后面查詢的數(shù)據(jù)是B
- 因為中途小紅將數(shù)據(jù)改成了B
- 這個時候就是兩次查詢數(shù)據(jù)不一致的問題
幻讀(Phantom Read)
- 在一個事務(wù)的兩次查詢中數(shù)據(jù)筆數(shù)不一致
- 例如有一個事務(wù)查詢了幾列(Row)數(shù)據(jù),而另一個事務(wù)卻在此時插入了新的幾列數(shù)據(jù)
- 先前的事務(wù)在接下來的查詢中,就會發(fā)現(xiàn)有幾列數(shù)據(jù)是它先前所沒有的
例如:
- 一開始小明修改了全部數(shù)據(jù),5條數(shù)據(jù),然后小紅在過程中新增了2條數(shù)據(jù),然后小明再次查詢的時候
- 發(fā)現(xiàn)我不是已經(jīng)改了全部的數(shù)據(jù)5條了嗎,為什么又多出了兩條多余的數(shù)據(jù)
- 有點產(chǎn)生幻覺的意思,所以就是幻讀了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Windows系統(tǒng)中完全卸載MySQL數(shù)據(jù)庫實現(xiàn)重裝mysql
這篇文章主要介紹了Windows系統(tǒng)中完全卸載MySQL數(shù)據(jù)庫實現(xiàn)重裝mysql數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05MySQL實戰(zhàn)文章(非常全的基礎(chǔ)入門類教程)
半個月時間把MySQL重新鞏固了一遍,梳理了一篇幾萬字超硬核文章,想學習mysql的朋友可以看看2023-05-05Mysql中TIMESTAMPDIFF函數(shù)的語法與練習案例
在應(yīng)用時經(jīng)常要使用這兩個函數(shù)TIMESTAMPDIFF和TIMESTAMPADD,下面這篇文章主要給大家介紹了關(guān)于Mysql中TIMESTAMPDIFF函數(shù)的語法與練習案例的相關(guān)資料,需要的朋友可以參考下2022-09-09MySql,MVCC實現(xiàn)及其機制,快照讀在RC,RR下的區(qū)別說明
這篇文章主要介紹了MySql,MVCC實現(xiàn)及其機制,快照讀在RC,RR下的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04MySQL生產(chǎn)庫Insert了2次同樣的記錄但是主鍵ID是不一樣的問題的分析過程
這篇文章主要介紹了MySQL生產(chǎn)庫Insert了2次同樣的記錄但是主鍵ID是不一樣的問題的分析過程,需要的朋友可以參考下2014-02-02