2011-03-06 80 views
5

爲併發控制實現多版本時間戳排序的DBMS通常在其預寫日誌中包含哪些內容?之前和之後的圖像,或其中之一?時間戳?還有什麼 ?你會在預先登錄日誌中登錄什麼?

+1

選擇實施並查看技術文檔? Postgres使用MVCC的一種形式,具有相當不錯的詳細文檔IIRC ...不知道火鳥或其他開放引擎,可以在周圍戳來。 – 2011-03-06 08:23:02

回答

3

Documentation of Postgres WAL。 Postgres使用MVTO類型的MVCC。 InnoDB使用MVRC。

這裏是Postgres log structurepg_control structure,這對於恢復很重要。因爲時間戳不可靠,所以它們使用單​​調遞增的整數計數器(事務ID)。

所以所有的回滾相關數據都存儲在主數據本身中,而不是存儲在WAL中。 WAL的

主要目的是恢復數據的櫃面因電力故障,操作系統問題或某個硬件故障(除了明顯嚴重的磁盤故障)的問題。所以WAL應該是非常獨立的。

Innodb日誌結構位於innodb/include/log0log.h中。

+0

@津巴布奧:謝謝!你知道MVTO和MVRC之間的區別嗎? – geeko 2011-03-07 04:30:57

+0

在我剛剛回答的問題中,我給了你一個鏈接(http://simpledbm.googlecode.com/files/mvcc-survey-1.0.pdf)。這解釋了MVCC的算法,postgres使用MVTO和InnoDB/Oracle使用MVRC。 – Zimbabao 2011-03-07 04:37:37

+1

@Zimbabao,鏈接404ed – Pacerier 2013-06-26 12:58:25