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