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

