[pgsql-jp: 38086] Re: コミット待ちトランザクションのメモリ消費量について

Satoshi Nagayasu nagayasus @ nttdata.co.jp
2007年 2月 27日 (火) 16:42:29 JST


永安です。

> 共有メモリなどのことを調べてみても
> 出てくる話題は検索時のキャッシュなどのことが多くて・・・
> 「未コミットのまま、処理を続けるとどんな影響があるのか」
> についての話題を見つけることができなかったので・・・
> (話題にするレベルでもない??)

未コミットの更新情報は、「WALバッファ」と呼ばれる領域に乗ります。
postgresql.conf の wal_buffers の部分ですね。

WALバッファの内容がディスクに書き出されるケースは大きく二点、
「トランザクションがコミットされた時」か
「WALバッファが足りなくなったとき」です。

ですので、未コミットのまま継続しても、
メモリの制限などが制約となることはあり得ないと思います。

> 1. 登録・更新・削除すると直接ファイルに書き込みに行く
> (ロールバックされるとゴミ領域として残る→VACUUMで処理)
> 2. コミットされるとWALに書き込まれる。
> 3. 遅れてWALから各データファイルに書き込まれる。
> (直接書き込んだデータの更新?)
> という感じなんですが・・・
> 間違っていますか?

1. 登録・更新・削除すると、WALに書き込み、共有バッファを変更する
2. コミットされると、WALに(コミットを)書き込み fsync する。
3. 遅れて共有バッファの内容をデータファイルに書き込む

という流れになります。

WALは「Write-ahead log」ですので、(共有メモリ内の)レコードを
更新するより前に記録されることになります。

このあたりは、WEB+DB PRESSの連載「PostgreSQL安定運用のコツ」の
第1回(Vol.32)、第4回(Vol.35)あたりに少し書きましたので、
よろしければご参照ください。

松本 康寛 wrote:
> 松本です。
> ご返答ありがとうございます。
> 
>> そもそもメモリ消費量は未コミットの変更量に依存するのですか?
>>
>> ロールバックに必要なデータはデータファイルの中に書いてあるし、
>> REDOに必要なデータはWALファイルの中に書いてあるから、
>> ちょっと考えて実装すると、そうはならないようにできるはずなん
>> ですが、実際はどうなんですかね?
>>
>> 例えばOracleも、ロールバックセグメントが大量に食われるという
>> のはありますが、メモリが食われるというのは聞いたことありませ
>> んし。
> 
> 
> そうなんです。
> 共有メモリなどのことを調べてみても
> 出てくる話題は検索時のキャッシュなどのことが多くて・・・
> 「未コミットのまま、処理を続けるとどんな影響があるのか」
> についての話題を見つけることができなかったので・・・
> (話題にするレベルでもない??)
> 
> しかし、仕事ではコミットする件数が決められていることが多ので・・・
> で、理由を聞くとメモリの話になります。
> 裏づけのある理由ではなく、源泉は「感覚的・経験的」です。
> 
> そもそも
> 実際のファイル書き込みってどうなっているしょうか?
> 私が調べたレベルでは
> 1. 登録・更新・削除すると直接ファイルに書き込みに行く
> (ロールバックされるとゴミ領域として残る→VACUUMで処理)
> 2. コミットされるとWALに書き込まれる。
> 3. 遅れてWALから各データファイルに書き込まれる。
> (直接書き込んだデータの更新?)
> という感じなんですが・・・
> 間違っていますか?
> 
> 
>> ところで、後学までに教えて欲しいのですが、
>>
>> > 単純にバッチ開始実行前にバックアップを
>> > 取っておけばいいわけですが、リアルタイムバッチの場合は
>> > その方法は使えないですし・・・
>>
>> リアルタイムバッチって、どういうものなのでしょう?
> 
> 不適切な表現ですね。申し訳ありません。
> ・一括でまとめて処理する機能をバッチ処理
> ・「夜間バッチ」の対として「リアルタイムバッチ」
> (日中にユーザオペレーションなどで実行される一括処理)
> と、私の所属している作業場では表現しています。
> 
> ご意見ありがとうございました。
> 
> 
> *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
> 
>  松本 康寛 (マツモト ヤスヒロ)
> 
> E-mail :wochenendhaus @ hotmail.com
> *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
> 
> ※利便性などを考えて、Hotmailを使用しております。
>  何卒、ご理解を賜りますようよろしくお願いします。
> 
> _________________________________________________________________
> ライブ映像を配信する「MSNミュージック LIVE PERFORMANCES」がスタート! 
> http://music.jp.msn.com/lp/


-- 
NAGAYASU Satoshi <nagayasus @ nttdata.co.jp>
Phone: +81-50-5546-2496




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