1. 程式人生 > >【mysql】--MVCC 多版本控制

【mysql】--MVCC 多版本控制

InnoDB的mvcc,是通過在每行記錄後面儲存兩個隱藏的列來實現的。這兩個列,一個儲存了行的建立時間,一個儲存行的過期時間(刪除時間)。儲存的並不是實際的時間,而是系統版本號。每一個新的事物,系統版本號都會遞增。 事物開始時刻的系統版本號會作為事務的版本號,用來和查詢到的每行記錄的版本號進行比較。

系統版本號:sysNoX
Select: 1 選擇版本早於當前事務本版的資料行;  2  行的刪除版本要麼未定義,要麼大於當前事物版本號,確保事務讀取到的行,在事務開始之前未刪除; insert:  innoDB確保新的行儲存當前系統版本號作為行版本號; delete: innoDB確保刪除的行儲存當前系統版本號作為行刪除標識; update:InnoDB 為插入一行新的紀錄,儲存當前系統版本號作為行版本號,同時儲存當前系統版本號到原來的行作為行刪除標識。