1. 程式人生 > >Postgresql日誌系統的實現(四)

Postgresql日誌系統的實現(四)

1.3.1.2 Xlog共享快取格式及作用

xlog.c檔案中:

typedef struct XLogCtlData

{

XLogCtlInsert Insert; /* WALInsertLock保護,標識新的可插入到xlog檔案中的位置等資訊,其中“forcePageWrites”為“PITR”技術提供了條件支援 */

/* Protected by info_lck: */

XLogwrtRqst LogwrtRqst;

XLogwrtResult LogwrtResult;/* 以上兩個提供了對於寫日誌時支援,決定了如何寫的條件 */

uint32ckptXidEpoch;/* nextXID & epoch of latest checkpoint

有何作用?*/

TransactionId ckptXid;/*同上,被“GetNextXidAndEpoch”函式使用,但不知有和作用? */

/* Protected by WALWriteLock: */

XLogCtlWrite Write;/*作用很大,但關係還是不很明朗? */

/*

* These values do not change after startup, although the pointed-to pages

* and xlblocks values certainly do.Permission to read/write the pages

* and xlblocks values depends on WALInsertLock and WALWriteLock.

*/

char*pages;/* buffers for unwritten XLOG pages */

XLogRecPtr *xlblocks;/* 1st byte ptr-s + XLOG_BLCKSZ */

SizeXLogCacheByte;/* # bytes in xlog buffers */

intXLogCacheBlck;/* highest allocated xlog buffer index */

TimeLineIDThisTimeLineID;/*標識物理日誌檔案的檔名中的時間線同用戶的恢復方式有關,如果使用者不是恢復到崩潰點(即恢復到以前的某個時間點或以前的某個事務號),則時間線增

1*/

slock_tinfo_lck;/* 自旋鎖,保護自己;locks shared variables shown above */

} XLogCtlData;