[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 メーリングリストの案内