文章目錄
- 1、RR隔離級別下,僅在事務中第一次執行快照讀時生成ReadView,后續復用該ReadView
- 2、總結
1、RR隔離級別下,僅在事務中第一次執行快照讀時生成ReadView,后續復用該ReadView
而RR 是可重復讀,在一個事務中,執行兩次相同的select語句,查詢到的結果是一樣的。
那MySQL是如何做到可重復讀的呢? 我們簡單分析一下就知道了
我們看到,在RR隔離級別
下,只是在事務中第一次快照讀時生成ReadView,后續都是復用該ReadView,那么既然ReadView都一樣, ReadView的版本鏈匹配規則也一樣, 那么最終快照讀返回的結果也是一樣的。
2、總結
所以呢,MVCC的實現原理就是通過 InnoDB表的
隱藏字段
、UndoLog 版本鏈
、ReadView
來實現的。
而MVCC + 鎖
,則實現了事務的隔離性
。
而一致性
則是由redolog
與undolog
保證。
原子性:undo log
一致性:undo log + redo log
隔離性:鎖+MVCC
持久性:redo log