この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、O2 です。
今回は、postgresql の設定ファイル(postgresql.conf) に関しての、私が最近設定している
デフォルト値を公開しようと思います。
実際、インストール直後の設定では、「ロースペックのマシン環境でも動作する」設定の為
最近のサーバースペックにあった、デフォルト値を記述してみようと思います。
とは言っても、私が扱っている最近のサーバーのメモリは、8GB、16GB、32GB で、さらに
PostgreSQL 8.3以降を使用しているので、PostgreSQL 8.3以降での、メモリ3パターンでの
デフォルト値を紹介します。
注意.あくまでも、私が割り出したデフォルト値ですので、どのように使用するかによってチューニングは
必要になりますので、参考にご使用ください。
説明の前に
PostgreSQL 8.2 以降かな?(間違っていたらだれか指摘してね)、設定値関して
shared_buffers などのメモリ設定が、MB(メガバイド)や、GB(ギガバイト)という単位で
設定できるようになっている為、設定しやすくなっています。
共通
max_connections = 200
log_destination = ‘stderr’
logging_collector = on
log_directory = ‘/var/log/postgresql’
log_filename = ‘postgresql-%Y-%m-%d.log’
log_min_messages = info
log_error_verbosity = verbose
log_line_prefix = ‘%t:%r[%p-%v]’
log_autovacuum_min_duration = 0
autovacuum = on
log_lock_waits = on deadlock_timeout = 30s
メモリ:8GB の場合
shared_buffers = 2GB
work_mem = 32MB
wal_buffers = 512KB
checkpoint_segments = 16
random_page_cost = 3.0
effective_cache_size = 2GB
メモリ:16GB の場合
shared_buffers = 3GB
work_mem = 32MB
wal_buffers = 512KB
checkpoint_segments = 16
random_page_cost = 3.0
effective_cache_size = 3GB
メモリ:32GB の場合
shared_buffers = 8GB
work_mem = 64MB
wal_buffers = 512KB
checkpoint_segments = 32
random_page_cost = 3.0
effective_cache_size = 8GB
※今回の設定は、サーバーをDB専用にした場合を想定して書いてます。