MVCC圖示


磨礪技術珠磯,踐行數據之道,追求卓越價值  

回到上一級頁面:PostgreSQL內部結構與源代碼研究索引頁    回到頂級頁面:PostgreSQL索引頁

[作者:高健@博客園 luckyjackgao@gmail.com]

 

資料來源:

其中對於MVCC的描述比較容易理解,特此貼圖備忘

圖1:事務T1改變數據V1,將其改為數據V2,在堆中,數據如下圖

 

圖2:事務T3改變了V2,將其改為V3,在堆中,數據如下圖:目前事務T2還在活動中,所以V1和V2屬於recently dead狀態,而不是真的dead狀態。

 

 

圖3:從可視性而言,事務T0只能看到數據V1。因為它早於事務T1啟動。

 

 

圖4:事務T1提交后,事務T2啟動,此時事務T3尚未啟動,故T2可以看到T1提交后的數據V2。

 

 

 

圖5:事務T3提交后,事務T4啟動,故T4只能看到數據V3。

 

 

圖6: 前面說過,當還有事務活動中訪問數據V1和V2,V1和V2的狀態是recently dead。

當T0和T2都結束,已經沒有事務在訪問數據V1和V2了,此時V1和V2為dead狀態,所以V1和V2都成為VACUUM的處理對象了。

 

[作者:高健@博客園 luckyjackgao@gmail.com]

回到上一級頁面:PostgreSQL內部結構與源代碼研究索引頁    回到頂級頁面:PostgreSQL索引頁

磨礪技術珠磯,踐行數據之道,追求卓越價值  


免責聲明!

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



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