多版本並發控制(MVCC)


  可以認為MVCC是行級鎖的一個變種,但是它在很多情況下避免了加鎖操作,因此開銷更低。

  雖然實現機制有所不同,但大都實現了非阻塞的讀操作,寫操作也只鎖定必要的行。

  MVCC的實現是通過保存數據在某個時間點的快照來實現的。

  MVCC只在讀提交和可重復讀這兩個隔離級別下工作。

 


 

  保存這兩個額外的系統版本號,使大多數讀操作都可以不用加鎖,這樣設計使得讀數據操作很簡單,性能很好,並且也能保證只會讀取到符合標准的行,不足之處是每行記錄都需要額外的存儲空間,需要做更多的行檢查工作,以及一些額外的維護工作。

 

MVCC在RR和RC隔離級別下的區別:

  在RR隔離級別下,一個事務只能讀取到事務開始的那個時刻的數據快照,即,別的事務修改並提交的數據在自身沒有提交之前一般讀取不到(加for update語句的select除外,因為這個語句要對數據加X鎖必須讀取最新的數據快照)。

  在RC隔離級別下,事務總是讀取數據行的最新快照,即會產生不可重復讀的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM