innodb快照讀取

innodb 也實現了mvcc ,

 

對於非鎖定行讀取 即非DML讀取,也可以成爲快照讀取。

 

在一個事物中 ,事物開始的時候 ,會被分配一個全局的事物id,即把當前系統版本號作爲當前事物的事物id,

這個當前系統版本號 會 隨着 因事物的開啓,和數據的dml 操作而遞增。

 

而表的 每一行 也有兩個版本號,一個是創建時間,一個是刪除時間,也是系統版本號。

 

innodb 在讀取的時候,只會讀取 早於 或者等於該事物版本號的 行記錄, 這有一個條件 就是 非鎖定行讀取, 就是平常的 select * from table,

 

而對於其他的 鎖定行 dml讀取 只會讀取最新的數據行版本,

 

insert update delete 是鎖定行讀取。

 

總結 快照讀取 只會讀取 早於等於自己事物版本號的 行記錄。

 

做個栗子

wKioL1bG3DWgJ7VHAAB0xjMzyyQ372.png

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章