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

MauMau maumau307 @ gmail.com
2012年 2月 23日 (木) 19:09:25 JST


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