20200429 mysql 如何解決幻讀

2021-10-06 01:18:02 字數 658 閱讀 8831

前言

事務的隔離級別有四種,讀未提交,讀已提交,可重複讀和序列化,下面結合具體的問題,在mysql中,innodb引擎是怎麼解決幻讀的?

什麼是幻讀?

一次事務中,多次查詢,結果集的個數不一樣,就叫幻讀

多出來的行就叫做幻行

為什麼要解決幻讀

高併發資料庫,要保持資料庫的一致性

mysql解決幻讀的方式

多版本併發 mvcc(快照讀/一致性讀)

next-key鎖(當前讀)

next-key原理next-key鎖

記錄鎖:加在索引上的鎖

間隙鎖:載入索引之間的鎖

總結

快照讀是通過mvcc解決了幻讀,只能讀當前事務發生之前,或者是當前事務進行修改的資料。select

當前讀是通過next-key(行鎖+間隙鎖)解決了幻讀,在索引與索引之間加排他鎖,這樣其他的操作在事務結束之前是想要訪問資料都被阻塞了。

mysql如何選擇引擎 mysql引擎如何選擇

有一張表用來存溫度資訊用於頁面展示折線圖用 結構如下 create table temp id varchar 40 not null,duuid varchar 40 default null,temp int 11 default null,recordtime datetime default...

mysql如何關聯 MySQL 如何執行關聯查詢

當前mysql執行的策略很簡單 mysql對任何關聯都執行巢狀迴圈操作,即mysql先在乙個表中迴圈取出單條資料,然後再巢狀迴圈到下乙個表中尋打匹配的行,依次下去,直到描述到所表表中匹配的行為止。然後根據各個表匹配的行,返回查詢中需要的各個列。mysql會嘗試在最後乙個關聯表中打到所有匹配的行,如果...

如何檢測mysql解除安裝完全 mysql如何解除安裝完全

如何徹底的刪除mysql資料庫 以下操作以window7作業系統為例 1 停止window的mysql服務。找到 控制面板 管理工具 服務 停止mysql後台服務。2 解除安裝mysql安裝程式。找到 控制面板 程式和功能 解除安裝mysql程式。3 刪除mysql安裝目錄下的所有檔案。4 刪除c盤...