針對mysql的RR級別的幻讀問題的分析與理解

2021-10-09 05:19:26 字數 406 閱讀 7745

由於最近被這個幻讀的問題給困擾,所以想整明白點,主要就是幻讀和不可重複讀的區別以及幻讀的實際使用場景。翻了一些文章,眾說紛紜,我大概抽了幾篇我覺得不錯的文章來說。

不可重複讀主要還是說的update和delete,他針對的是同一次查詢的資料,而幻讀則針對的是insert(t1第一次查沒有這條記錄然後準備insert,t2此時insert,t1接著insert,發現無法插入,這就是幻讀,另外還有一種針對幻讀的解釋就是兩次查詢數量不一致問題)

目前我覺得說的比較清楚的是這篇文章:不扯概念,用例子演示什麼是髒讀,不可重複讀,幻讀?

關於幻讀,可重複讀的真實用例是什麼?(知乎簡單篇)

mysql 幻讀的詳解、例項及解決辦法(segmenfault詳版)

「不可重複讀側重表達 讀-讀,幻讀則是說 讀-寫,用寫來證實讀的是鬼影。」

InnoDB的RR隔離級別能否防止「幻讀」

一 快照讀和當前讀 參考這篇文章 在rr級別中,通過mvcc機制,雖然讓資料變得可重複讀,但我們讀到的資料可能是歷史資料,不是資料庫最新的資料。這種讀取歷史資料的方式,我們叫它快照讀 snapshot read 而讀取資料庫最新版本資料的方式,叫當前讀 current read 這兩者是衝突的。1....

MySQL隔離級別(幻讀)

mysql 事務的基本了解 acid 1 事務的概念 什麼是事務呢?事務是指單個邏輯單元完成一些列操作,它要麼全部執行成功,要麼就失敗。事務處理可確保只有事務單元的操作。否則就不會擁有永久面向資料的更新資源,乙個邏輯工作單元要想成為事務,那麼他就必須要擁有事務的特性。2 事務的用途 事務主要處理大量...

mysql事務隔離級別及幻讀

一 事務的基本特性 acid 1.原子性 atomicity 事務中的所有操作要麼全部生效,要麼全部不生效。事務如果執行過程中報錯,會將所有的操作回滾。也就是事務中的所有操作是乙個整體,就像化學中學過的院子,是構成物質的基本單位。2.一致性 consistency 事務開始前和事務結束後,資料處於一...