スケールアウトを利用する際に、postgresql.confファイルに設定するFUJITSU Enterprise Postgresのパラメータについて説明します。
postgres_scaleout_fdwが外部サーバへの接続を確立する際に利用する、application_nameの値を設定します。このパラメータは外部サーバオブジェクトの設定を上書きします。このパラメータを変更することは、すでに確立した接続に対して影響を及ぼさないことに注意してください。
postgres_scaleout_fdw.application_nameには任意の長さの文字列を設定でき、またその中には非ASCII文字を含むことができます。ただし、それらの値がapplication_nameの値として外部サーバの接続に用いられる際には、その文字列はNAMEDATALEN未満に切り捨てられ、非ASCII文字は疑問符(?)に置き換えられることに注意してください。文字列の切り詰めおよび非ASCII文字に関する取扱いの詳細は、application_nameを参照してください。
%文字はエスケープ文字列の開始を意味しており、下記の表に示すステータス情報に置き換えられます。認識されないエスケープは無視されます。エスケープ文字列以外の文字はそのままapplication_nameへとコピーされます。文字のアラインメントやパディングのために、%文字とオプションの間に正や負の符号または数字を記載することは許可されていないことに注意してください。
オプション | 置き換え内容 |
---|---|
%a | ローカルサーバのアプリケーション名 |
%u | ローカルサーバのユーザー名 |
%d | ローカルサーバのデータベース名 |
%p | ローカルサーバのバックエンドプロセスのID |
%c | ローカルサーバのセッションID |
%C | ローカルサーバのクラスタ名 |
%% | リテラルの% |
例えば、ユーザーlocal_userがデータベースlocal_dbからforeign_dbにユーザーforeign_userとして接続し、パラメータを'db=%d, user=%u'に設定した場合、これは'db=local_db, user=local_user'に置き換えられます。
postgres_scaleout_fdwが確立したデータノードへの接続の生死監視を行う間隔を設定します。接続の切断を検知すると、実行中のトランザクションはアボートされます。
このパラメータのデフォルト動作(false:コミットフェーズをスキップしない)を変更する必要はありません。このパラメータをtrueに設定した場合、リグレッションテストとデバッグのためにのみ使用されます。trueの場合、二相コミットプロトコルで処理される外部トランザクションは、PREPAREDされただけで、実際にはコミットされていません。つまり、準備フェーズは実行されるが、コミットフェーズは実行されません
ノード: 中央管理ノードでのみ設定
リゾルバワーカーの最大数を指定します。
ノード: 中央管理ノードでのみ設定
デフォルト値: 4
0を指定すると、機能が無効になります。このパラメータはサーバ起動時のみ設定可能です。変更には再起動が必要です。
リゾルバワーカーは接続可能なデータベースの数だけ起動されます。デフォルトではtemplate0は接続可能でないためリゾルバワーカーは起動されませんが、template1は接続可能であるためリゾルバワーカーは起動されます。このパラメータはサーバの起動時のみ設定可能であるため、将来使用する予定のデータベース数も考慮して設定してください。
リゾルバワーカーは、max_worker_processesで定義されたプールから取得されます。ワーカースロットがPostgreSQLの他の機能 (並列クエリやロジカルレプリケーションなど) でも使用されている場合は、max_worker_processesの値をそれに応じて増やします。
リゾルバランチャープロセスがデータベースをチェックし、必要に応じてリゾルバワーカープロセスを起動するまでの待機時間、およびリゾルバワーカープロセスが接続されたデータベース上でトランザクションの解決とバキューム機能を実行するまでの待機時間を指定します。
ノード: 中央管理ノードでのみ設定
デフォルト値: 5s(単位:秒)
0を指定すると、機能が無効になります。リゾルバランチャーはpg_databaseからのデータベースリストのフェッチを停止し、リゾルバワーカーは次のサイクルで終了します。