2013年9月2日月曜日

PostgreSQLのチューニング情報

VACUUM FULL(データベースの最適化)をしても性能が向上しない現象が発生した。
原因は、統計精度が小さすぎることで、統計情報が荒くなって性能が低下するという現象が起きていた。

PostgreSQLのバージョン8.1で、postgresql.confのdefault_statistics_target(統計精度)がデフォルトで10になっていた。(8.4以降はデフォルトが100)
10では大きなテーブルでは統計情報が荒くなる。

対策は、統計精度を拡張することだが、default_statistics_targetを単純に増やしてしまうと
VACUUMの処理時間が長くなる。
よって、性能が低下しているSQLで参照しているテーブル、カラムを個別に拡張することが効果的だと思われる。
設定方法は以下の通り。
 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET STATISTICS 200;

上記設定が適用されるのはVACUUM実行時。
早くなるのは、統計精度を拡張したカラムを条件としたSELECTのみ。
統計精度が関係ないカラムのSELECTやINSERTには何の影響もない

0 件のコメント:

コメントを投稿