mysql可重複讀

2021-10-01 09:22:38 字數 482 閱讀 1534

mysql innodb的預設隔離級別是可重複讀,之前理解有些偏差,查閱一些資料後總結出幾點

首先有兩個概念:

一致性檢視:當乙個事務開啟時,innodb會生成乙個檢視,這個檢視是邏輯檢視,通過undo log和row tranzaction id控制實現。在該事務的任何時間點,一致性檢視中的資料都是一樣的

當前讀:當innodb執行dml時,使用的是當前讀,並且要先獲得行鎖(沒有索引時為表鎖)

更新資料都是先讀後寫的,而這個讀,只能讀當前的值,稱為「當前讀」(current read)。

到底什麼資料(修改)是可見的?

1.普通的select:一致性檢視+本事務中做的修改

2.dml和select …for update或者其它帶鎖的查詢:一致性檢視+本事務中做的修改+其它已提交事務的修改(僅包括當前事務修改的資料行,當期事務沒有修改的資料行也是不可見的)。

也就是當前讀,其實很好理解,既然用到了鎖,同步資料狀態也是應該的。

mysql 可重複讀。

一 可重複讀 我們先看看現象,再分析原理。我的mysql版本是5.5。下面是一張表,只有一條資料,並且我開啟了事物 此時,另乙個事物將record加1,因此我在開啟乙個命令列客戶端,執行下面的命令 成功加1之後,實際上,資料庫中record肯定是2。然後回到之前的客戶端,再查一次 沒毛病,recor...

MySQL 的可重複讀

我在這裡分享一篇關於 mysql 的可重複讀介紹,講得挺好的,可以解決一些疑惑,鏈結在下方引用處。sql 1992 年標準關於幻讀 phantom 的解釋 乙個事務 t1 根據某些查詢條件 讀取某幾行資料,然後事務 t2 執行 sql 語句插入一行或多行滿足查詢條件 的資料 這時候如果事務 t1 重...

mysql 提交讀 可重複讀

環境 mysql select version version 5.6.31 log 1 row in set 0.00 sec 檢視當前資料庫隔離級別 mysql select global.tx isolation,tx isolation global.tx isolation tx isol...