1. 程式人生 > >多版本併發控制(MVCC)

多版本併發控制(MVCC)

MVCC是行級鎖的一個變種,在很多情況下避免了加鎖操作,開銷很低,雖然實現機制不同,大多實現了非阻塞的讀操作,寫操作也只鎖定必要的行 InnoDB的MVCC,是通過在每行記錄後面儲存兩個隱藏的列來實現的。這兩個列,一個是行的建立時間,一個是行的過期時間或刪除時間。當然儲存的並不是實際的時間值,而是系統版本號(system version number)。每開始一個新的事務,系統版本號都會自動遞增。事務開始時刻的系統版本號會作為事務的版本號,用來和査詢到的每行記錄的版本號進行比較 大多數讀操作都可以不用加鎖 MVCC只在’提交讀’和’可重複讀’這兩個級別下工作

MVCC 維護版本號 insert:InnoDB為這個事務中新插入的行,儲存當前事務版本號的行作為行的行建立版本號 delete:InnoDB為每一個刪除的行儲存當前事務版本號,作為行的刪除標記 update:將存在兩條資料,保持當前版本號作為更新後的資料的新增版本號,同時儲存當前版本號作為老資料行的更新版本號