Multi-Version Concurrency Control 多版本並發控制,MVCC 是一種並發控制的方法,一般在資料庫管理系統中,實現對資料庫的並發存取;在程式語言中實現事務記憶體。
1.沒有一個統一的實現標準,實現了非阻塞的讀取操作,寫入操作也只鎖定必要的行
2.透過保存資料在某個時間點的快照實現的
3.典型的有樂觀並發控制和悲觀並發控制
4.innodb的mvcc是每次事務都有遞增的版本號,通過在每行記錄的後面添加兩列隱藏字段,兩列分別是是建立版本號和刪除版本號,儲存操作它事務的版本號
5.在事務中增刪改查就是對兩列版本號字段進行操作
insert 為新插入的每一行保存當前交易版本號碼到行建立版本號字段
update 插入一行新的保存目前事務建立版本號,修改原行資料的刪除版本號為本次交易的版本號
delete 修改行的刪除版本號字段為本次事務的版本號
select 查詢建立版本號欄位小於等於目前事務版本的資料 確保記錄是本次之前就存在的或本次事務新插的
查詢刪除版本號欄位不存在或大於目前版本的資料確保該記錄在本次交易之前沒有刪除
6.這樣的設計就不需要加鎖了,讀和操作性能好,但是需要額外的存儲空間
7 .mvcc只在REPEATABLE READ和READ COMMITED兩個隔離下工作;READ UNCOMMITED總是讀取最新數據;SERIALIZABLE對讀取的行都加鎖
【推薦課程:mysql視頻教程】
以上是[MySQL] MVCC多版本並發控制實現的事務的詳細內容。更多資訊請關注PHP中文網其他相關文章!