[MySQL] MVCC多版本并發控制實現的事務

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視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享