您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關什么是幻讀,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
幻讀就是事務A首先根據條件索引得到N條數據,然后事務B改變了這N條數據之外的M條或者增添了M條符合事務A搜索條件的數據,導致事務A再次搜索發現有N+M條數據了,這就會產生幻讀。
如何解決幻讀?
通過 next-key lock解決。
產生幻讀的原因是,行鎖只能鎖住行,但是新插入記錄這個動作,要更新的是記錄之間的“間隙”。因此,為了解決幻讀,InnoDB引入間隙鎖。
Gap lock間隙鎖在可重復讀級別下才有效
間隙鎖和行鎖合稱 next-key lock,每個 next-key lock 是前開后閉區間。
在數據庫定義的四種隔離級別中
最高隔離級別SERIALIZABLE_READ可以保證不出現幻讀的問題。
Repeatable Read (RR)
針對當前讀,RR隔離級別保證對讀取到的記錄加鎖 (記錄鎖),同時保證對讀取的范圍加鎖,新的滿足查詢條件的記錄不能夠插入 (間隙鎖),不存在幻讀現象。
關于什么是幻讀就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。