PostgreSQL の初期化パラメータ
PostgreSQL のコンフィグレーション パラメータは、postgresql.conf ファイルで設定されます。ほとんどのパラメータ設定は、変更後に PostgreSQL データベース クラスタを再起動する必要があります。
以下に、ArcSDE でのパフォーマンス向上のために PostgreSQL で推奨される変更点を示します。
設定とパラメータは、オペレーティング システムによって異なります。これらのパラメータの使用と設定については、必ず PostgreSQL のドキュメントをお読みください。
max_connections
PostgreSQL のデフォルトの max_connections は 100 です。1 つの ArcGIS クライアント接続は、2 つの PostgreSQL 接続に相当します。
PostgreSQL の max_connections パラメータをどのように設定するかを決定する際は、接続アプリケーションで使用される接続数と、同時に接続される可能性のあるクライアント アプリケーションの種類の数を考慮します。たとえば、ArcSDE サービス接続を利用する 1 人のユーザが、ArcMap と ArcCatalog からデータベースに接続する場合、アプリケーションごとに 2 つの接続が使用されるので、この 1 人のユーザは合計 4 つの接続を使用することになります。同じユーザが、さらにジオプロセシング スクリプトを実行する場合、そのスクリプトを実行している間は 2 つの接続が使用されます。
データベースに接続される Web アプリケーションも考慮する必要があります。ArcIMS の場合、接続はスレッドごと、空間サーバごとにカウントされます。デフォルトでは、サーバのタイプごとに 2 つのスレッドが使用されます。中には複数のサーバ タイプを使用するサービスもあるので、接続数はサービス数にスレッド数をかけた数になります。ArcGIS Server Web アプリケーションの場合、接続はサービス インスタンスごとにカウントされるので、接続数は実行中のインスタンス数に等しくなります。(複数のサービスを使用する Web アプリケーションもあることに注意してください。その場合、接続数はサービス数に実行中のインスタンス数をかけた数になります。)カスタム アプリケーションの場合、各アプリケーションが使用する接続数を判断して、必要な接続数の見積もりに追加する必要があります。
さらに、super_user_reserved 接続の PostgreSQL パラメータによってスーパー ユーザ用に確保しておく接続数も考慮しなければなりません。同時接続数が、max_connections から superuser_reserved_connections を差し引いた値に達した場合、新しい接続はスーパー ユーザだけに許可されます。2 つのパラメータを両方ともデフォルト設定のままにした場合、97 番目の同時接続があった時点で、残り 3 つの接続はスーパー ユーザしか利用できないようになります。
このパラメータを変更した場合は、PostgreSQL データベース クラスタを再起動してください。このパラメータの値を増やす場合は、shared_buffers の値も増やす必要があります。shared_buffers の最小値は max_connections の値に依存するためです。
shared_buffers
shared_buffers パラメータは、PostgreSQL データベース サーバで共有メモリ バッファに使用されるメモリの量を指定します。デフォルトは 32MB ですが、UNIX カーネル設定でサポートされない場合には 32MB より小さい場合があります。この設定は 128KB 以上とし、少なくとも max_connections の設定値に 16KB をかけた値にする必要があります。PostgreSQL のドキュメントでは、適切なパフォーマンスを得るためにこのパラメータを最小値よりかなり大きく設定する必要があると記述されています。運用環境のインストールでは、数十 MB に設定することが推奨されます。
このパラメータを変更した場合は、データベース クラスタを再起動する必要があります。
max_fsm_pages と max_fsm_relations
共有空き領域マップのサイズを制御する 2 つのパラメータです。共有空き領域マップは、データベースで未使用の領域の場所を追跡します。max_fsm_pages は、共有空き領域マップで空き領域を追跡する際のディスク ページの最大数を設定します。1 ページ当たりで 6 バイトの共有メモリが消費されます。これは、max_fsm_relations 値の 16 倍以上に設定する必要があります。デフォルトは、使用可能なメモリ量に応じて initdb によって決定されるので、20KB から 200KB ページの範囲です。max_fsm_relations は、共有空き領域マップで空き領域を追跡する際のリレーションの最大数を設定します。デフォルトは 1,000 リレーションです。この 2 つのパラメータを設定できるのは、サーバの起動時だけです。
現在の設定が適切かどうかを判断する場合は、データベース全体で VACUUM VERBOSE コマンドを実行することができます。VACUUM VERBOSE の最後の数行に、この判断に役立つ情報が表示されます。現在の設定が低すぎる場合には、この操作中に NOTICE メッセージも印刷されます。
wal_buffers
wal_buffers パラメータは、共有メモリ内で先行書き込みログ(WAL)データ用に使用されるメモリ量を指定します。デフォルトは 64 KB です。データはトランザクションをコミットするたびにディスクに書き出されるので、この値は一般的な 1 回のトランザクションで生成される WAL データ量を保持できる大きさに設定すれば十分です。このパラメータを設定できるのは、サーバの起動時だけです。
上記のパラメータの値を大きくすると、Linux オペレーティング システムのデフォルト設定で使用できるより多くの System V 共有メモリが PostgreSQL により要求されることがあります。共有メモリ割り当ての変更の詳細については、PostgreSQL のドキュメントで「カーネル資源使用」のトピックをご参照ください。