MySql快照讀和當前讀

2021-10-21 05:55:34 字數 618 閱讀 7442

顧名思義,就是從當前狀態複製乙份快照出來,之後可以從快照裡讀取資料,但是並不是真正將整份資料複製的,而是利用了版本機制實現。簡單

select 不加鎖的語句就是快照讀。

select

*from t_user;

select

*from t_user where id =

1;

全程在最新版本裡讀取資料。加鎖的 select 語句,insert、update 和 delete 語句都是當前讀。

select

*from t_user for

update

;select

*from t_user lock

inshare

mode

;insert

into t_user values(.

..);

update t_user set username = ? where id = ?;

delete

from t_user where id = ?;

mysql 快照讀和當前讀

以下都是在可重複讀隔離級別情況下的 快照讀 普通的不加鎖的select就是快照讀。通過readview實現,可重複讀級別時,整個事務的普通select都是使用同乙個readview。readview相關請看文章 總之,可以理解為當前事務建立後,會立即生成乙個快照,查詢的結果都是基於這個快照。新的其他...

Mysql快照讀和當前讀

讀取的是記錄資料的可見版本 可能是過期的資料 不用加鎖 讀取的是記錄資料的最新版本,並且當前讀返回的記錄都會加上鎖,保證其他事務不會再併發的修改這條記錄 概念說的比較虛,也不好理解,接著舉乙個例子吧,假設你開啟了兩個事務,分別是a和b,這裡有個張表,user表,裡面有四條資料 x表示是排它鎖 exc...

當前讀和快照讀

在mvcc併發控制中,讀操作可以分成兩類 快照讀 snapshot read 與當前讀 current read 快照讀,讀取的是記錄的可見版本 有可能是歷史版本 不用加鎖。當前讀,讀取的是記錄的最新版本,並且,當前讀返回的記錄,都會加上鎖,保證其他事務不會再併發修改這條記錄。innodb的預設事務...