[pgsql-jp: 36551] Re: PostgreSQL のデータ領域を NAS 上にした場合

Katsuhiko Okano k_okano @ po.ntts.co.jp
2005年 12月 14日 (水) 18:03:21 JST


岡野と申します。


"Kouji Ito" wrote:
> PostgreSQLって1回のトランザクションを行うにあたって、必ずディスク
> にデータを書き戻してるんでしょうか?

チェックポイントのタイミングとコミットのタイミングは同じとは限らないので、
1回のトランザクションを行うにあたって、必ずディスク
にデータを書き戻してるとは言えないと思います。
また、トランザクションの途中でも(他のトランザクションから見えない形で)
ディスクに書き込まれている状態もあると思います。

チェックポイント・・・メモリ上のデータを全てディスクに書き込む
コミット・・・・・・・トランザクションを終え、他のトランザクションからも
           見えるようにする。
と思っています。


> 一旦、共有メモリ内で書き込みが完結(クライアントにトランザクション終了を
> 通知)して、非同期に共有メモリの内容をディスクにフラッシュしているんだと
> すると、ローカルディスクであっても、マシンのクラッシュなどで、DBの整合
> 性が保てなくなるケースがありそうな気がします。

トランザクション終了の前にログとしてディスクに記録しておく
という仕組み(Write Ahead Log)により、必要なファイルが残っていれば
整合性は保てるんじゃないかと思います。
(データとログは別な意味で使ってます)
#この辺はPostgreSQLの実装に詳しい方のフォローが欲しいところですね。
----------------------------------------
Katsuhiko Okano
k_okano at po.ntts.co.jp
NTT Sofrware Corp. (division "NBRO-PT4")



pgsql-jp メーリングリストの案内