Skip to content

Instantly share code, notes, and snippets.

@kmikmy
kmikmy / checkpoint.md
Last active February 10, 2016 08:41
ポストグレスのチェックポイント処理について

void CreateCheckPoint(int flags)

チェックポイントのアクションはある期間にまたがって発生するが、論理的には1つのLSNの地点で発生するので、 これは非常に特別な操作でありWALレコードです。

WALレコードのREDO PTRの論理的な位置は、同じまたは物理的位置よりも前です。

我々はWALを再生するとき、我々は、その物理的な位置を介してチェックポイントレコードを探しだし、 REDO PTRを読み、実際にはそれ以前の論理的な位置でreplayを開始する。

@kmikmy
kmikmy / recovery_code.md
Last active February 10, 2016 01:01
コードで読むポストグレスのリカバリ

コードで読むポストグレスのリカバリ

RedoRecPtr

最も最近のチェックポイントレコードを指すポインタ。 バックエンドプロセス用のローカルコピーが

static XLogRecPtr RedoRecPtr; 
@kmikmy
kmikmy / recovery.md
Last active January 29, 2016 03:32
postgresのリカバリに関するメモ

XLogWrite(XLogwrtRqst WriteRqst, bool flexible)

返り値

void

引数

少なくともWriteRqstが示す限りのログをWrite and/or fsyncする。 flexible == TRUEならば、必ずWriteRqstまで書く必要はなく、

共有メモリ

参考資料 http://ikubo.x0.com/PostgreSQL/pdf/IK08_ipc_041117.pdf

上記の資料から引用

PostgreSQLでは、バックエンドプロセス間でデータを共有 するために、共有メモリを使用している。 
共有メモリは、postmaster 起動時にまとめて1つの領域として確保される。
そして、この1つの共有メモリの領域をセグメントに切り分けて、様々な目的に使用する。

XLogFlush(XLogRecPtr record)

概要

与えられた位置(record)までのXLOGデータがディスクにフラッシュされることを確実にする。

返り値

void

引数

XLogRecPtr record

@kmikmy
kmikmy / pg_xlogdump.md
Last active December 4, 2015 07:41
pg_xlogdump の使い方

pg_xlogdumpツールについて

/usr/local/pgsql/data/pg_xlogに含まれるWALログをhuman-readableな形で表示してくれるツール

インストール方法

postgresのソースコードに含まれるcontrib/pg_xlogdump内にcdして

$ make 
@kmikmy
kmikmy / xlog_insert.md
Last active December 4, 2015 05:14
XLogInsert()

Imgur Imgur Imgur

XLogInsert()

概要

ログレコードをWALバッファに挿入(コピー)する

@kmikmy
kmikmy / definition.md
Last active October 28, 2015 02:10
主要な構造体

WALに関する主要な構造体

xlog.h

XLogRecord

ソースコード

typedef struct XLogRecord
@kmikmy
kmikmy / abstract.md
Last active October 23, 2015 08:21
PostgreSQL 9.4のロギングについて

PostgreSQL 9.4のロギングについて

概要

backend/access/transam/README

PostgresのコードではWALのサブシステムのことをXLOGと呼ぶ。

WALの基本的な前提は、そのログが記述しているデータページの変更の前に