[pgsql-jp: 41059] Re: PostgreSQL 9.1.2 でSql が遅くなることがある

Mane24 mane24jp @ yahoo.co.jp
2012年 2月 25日 (土) 12:54:18 JST


MauMauさん。

Mame24です。

 > わずか2MBのwal_buffersがメモリを圧迫したとは考えにくいです。
 > なぜなら、WALバッファは接続ごとに割り当てられるわけではなく、
 > PostgreSQLのインスタンスごとに1つ割り当てられるからです。


上記、回答ありがとう御座います。
wal_buffers ではなく現環境では原因が別にあるということを、
理解しました。

色々とありがとう御座いました。

--

> Mame24さん
>
>
> MauMauです。
>
> わずか2MBのwal_buffersがメモリを圧迫したとは考えにくいです。
> なぜなら、WALバッファは接続ごとに割り当てられるわけではなく、
> PostgreSQLのインスタンスごとに1つ割り当てられるからです。
>
> どのような処理に時間がかかっているかを調べるため、まずは
> EXPLAIN ANALYZEやcontrib/auto_explainを使うことがよいと思います。
>
>
> 以上です。
>
> ----- Original Message ----- From: "Mane24" <mane24jp @ yahoo.co.jp>
> To: "PostgreSQL Japanese Mailing List" <pgsql-jp @ ml.postgresql.jp>
> Sent: Thursday, February 23, 2012 12:53 PM
> Subject: [pgsql-jp: 41056] Re: PostgreSQL 9.1.2 でSql が遅くなることがある
>
>
>> MauMau さん。ご回答ありがとう御座います。
>>
>>> wal_buffersのデフォルト値は、9.1から-1になりました。
>>> 設定値が-1の場合、WALバッファの大きさはshared_buffersの1/32になります。
>>> ただし、実際のWALバッファの大きさは、
>>> もしこの計算値が64KBより小さければ64KBに、
>>> 16MBより大きければ16MBに補正されます。
>>>
>>> 9.0以前ではwal_buffersのデフォルト値は64KBです。
>>> ですので、もし8.4でもwal_buffersを設定していなかったとしたら、
>>> WALバッファが性能劣化の原因ではないと思われます。
>>
>> 8.4 では、
>> shared_buffers を、64MB
>> wal_buffers = 512kB
>> で設定していました。
>>
>> 9.1 では
>> shared_buffers を、64MB
>> wal_buffers = -1
>>
>> で、計算式より、2MB で設定されていると言うことですね。
>> 以前より、多くのメモリが割り当てられ圧迫していたのでしょうか。
>>
>>
>> 「wal_buffersの値はデフォルトでshared_buffersの容量に応じて自動的
>> に調整されるようになりました」
>>
>> となっていたのですが、以前のバージョンのデフォルト値とずいぶん差が
>> あるのですね。
>>
>>>
>>> 数時間かかるようになったSQL文は、8.4ではどのくらいの時間で終了していたの
>>> でしょうか。
>>> 何十倍もの時間がかかるのであれば、EXPLAIN ANALYZEや
>>> contrib/auto_explainで
>>> 問合わせ計画を見てみるのがよいでしょう。
>>> もしかすると、統計情報が正しくないために、インデックスが使われていないこ
>>> とも考えられます。
>>> マニュアルの次の部分に記されているように、アップグレード後には、
>>> ANALYZEやVACUUM ANALYZEで統計情報を収集する必要があります。
>>
>> 数秒程度で終了していました。
>> ANALYZEやVACUUM ANALYZEで統計情報を収集 は、タスクで運用開始前に行って
>> います。
>>
>> あと、autovacuum は停止してあります。
>>
>
>



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