その他
    ホーム 技術発信 DoRuby PostgreSQL 8.3 以降からの postgresql.conf を、サーバースペックによるデフォルト値を設定し、パフォーマンスチューニングする

    PostgreSQL 8.3 以降からの postgresql.conf を、サーバースペックによるデフォルト値を設定し、パフォーマンスチューニングする

    この記事はアピリッツの技術ブログ「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専用にした場合を想定して書いてます。