Pgpool-II 4.4.9 文書 | |||
---|---|---|---|
前のページ | 上に戻る | 付録 A. リリースノート | 次のページ |
リリース日: 2022-12-06
このバージョンには、設定と管理を容易にするために多くの機能拡張が追加されています。 動的スペアプロセス管理機能を追加しました。 ストリーミングレプリケーションの遅延は、バイト単位だけでなく時間単位で制御できるようにしました。 Pgpool-IIとPCPが複数のIPアドレスをリッスンできるようになりました。 Unixドメインソケットディレクトリの完全な設定が可能になりました。 trusted_serversが上位接続を確認するために使用するコマンドを指定できるようになりました。 新しいPostgreSQL 15のSQLパーサが取り込まれました。 クエリキャッシュのパフォーマンスも向上しました。
以下は主な機能拡張です。
新たに動的スペアプロセス管理機能を追加しました。 この機能により、静的プロセス管理モードと動的プロセス管理モードを選択することができます。
ストリーミングレプリケーションモードで、レプリケーションの遅延を時間で指定できるようにしました。 この目的のために、新しいパラメータdelay_threshold_by_timeを追加しました。
Pgpool-IIはPostgreSQLと同じようにunix_socket_directories、 unix_socket_groupおよびunix_socket_permissions をサポートするようになり、UNIXドメインソケットをより柔軟かつ正確に制御できるようになりました。
listen_addressesおよびpcp_listen_addressesで、カンマ区切りの複数のリッスンIPアドレスを設定できるようになりました。 これにより、接続を受け付けるネットワークインターフェイスを制御でき、安全でないネットワークインターフェイスで悪意のある接続要求が繰り返されるのを防ぐことができます。
trusted_serversが上位接続を確認するために使用するコマンドを指定できるようになりました。 この目的のために、新しいパラメータtrusted_server_commandを追加しました。
PostgreSQL 15 のSQLパーサを取り込みました。
ロックの競合を減らして、クエリキャッシュを高速化しました。これにより、同時実行中のクライアントは、キャッシュの内容をより迅速に取得できるようになりました。
設定パラメータsocket_dirをunix_socket_directoriesに名前変更しました。
設定パラメータdelegate_IPをdelegate_ipに名前変更しました。 古いバージョンとの互換性のために、古いパラメータdelegate_IPは引き続き使用できますが、 delegate_ipに変換され、警告メッセージが出力されます。
バックエンドからのパラメータステータスメッセージがフロントエンドに転送されるようになりました。 これまでは、バックエンドからパラメータステータスメッセージが届くと、Pgpool-IIはそれを記憶していましたが、フロントエンドには転送しませんでした。 この変更により、それらのメッセージはフロントエンドに転送されます。 Pgpool-IIを使用するアプリケーションでは、これらのメッセージを受け入れる準備をする必要があります。 しかし、PostgreSQLはフロントエンドに既に送信しているため、PostgreSQLを使用しているアプリケーションはこの変更の影響を受けないはずです。
新たに動的スペア(アイドル状態)プロセス管理機能を追加しました。(Jianshen Zhou、Muhammad Usama)
この機能により、静的プロセス管理モードと動的プロセス管理モードを選択することができます。 静的プロセス管理は、Pgpool-IIの既存の動作と同じで、起動時にすべての子プロセスを生成します。 新しい動的モードは、アイドル状態のプロセスを追跡し、この数を指定された範囲内に維持するためにプロセスをforkまたはkillします。
プロセス管理の動作を設定するために、process_management_mode、process_management_strategy、min_spare_children、およびmax_spare_childrenという4つの新しい設定パラメータが追加され、process_management_strategyでは3つのスケーリングダウン戦略を選択できます。
レプリケーションの遅延を時間で指定できるようにしました。(Tatsuo Ishii)
delay_thresholdでは、レプリケーション遅延の上限をバイト単位で指定します。 今回はdelay_threshold_by_timeというパラメータを追加して、レプリケーション遅延の上限を時間(秒)で指定できるようにしました。 新しいパラメータが0より大きい場合に有効になります。 この場合は、SHOW POOL_NODESとpcp_node_infoのレプリケーションの遅延は秒単位で表示します。 このパラメータが0に設定されている場合には、 delay_threshold_by_timeは無視され、delay_thresholdモードに戻ります。
この目的のために、共有メモリデータBackendinfoの新しいメンバstandby_delay_by_timeを追加し、レプリケーションの遅延がバイト単位(standby_delay_by_time = false)で測定するか、秒単位(standby_delay_by_time = true)で測定するかを区別します。 standby_delay_by_timeがtrueの場合は、standby_delayは秒 * 1000000で測定されるため、精度は小数点以下6桁です。
unix_socket_directoriesおよび関連パラメータをサポートするようになりました。(Masaya Kawamoto)
設定パラメータsocket_dirをunix_socket_directoriesに名前変更し、新しいパラメータunix_socket_groupおよびunix_socket_permissionsを追加しました。
新しい設定値パラメータtrusted_server_commandを追加しました。(Takuma Hoshiai)
この機能により、trusted_serversが上位接続を確認するために使用するコマンドを指定できるようになりました。 これまでは、pingコマンドのみが使用され、ハードコーディングされていました。
デフォルトは'ping -q -c3 %h'で、以前と同じです。
listen_addressesおよびpcp_listen_addressesでカンマ区切りの複数のリッスンIPアドレスを設定できるようにしました。(Tatsuo Ishii)
これまでは、listen_addressesに単一のホスト名/IPアドレス、または'*'しか設定できませんでした。 今回はPostgreSQLと同じように、パラメータに複数のリッスンIPアドレスを設定できるようになりました。
また、pcp_listen_addressesもカンマで区切られた複数のリッスンIPアドレスを受け付けるようになりました。
PostgreSQL 15の新しいSQLパーサを取り込みました。(Bo Peng, Tatsuo Ishii)
PostgreSQL 15パーサのおもな変更点は次のとおりです。
新しいSQL MERGE文が追加されました。
MERGE INTO ... USING ...
COPY FROMに新しいオプションHEADER MATCHが追加されました。
COPY ... FROM stdin WITH (HEADER MATCH);
外部キーON DELETE SETアクションを指定できるようになりました。
CREATE TABLE t1 ( ... FOREIGN KEY (c1, c2) REFERENCES t2 ON DELETE SET NULL (c2) );
ALTER TABLEでSET ACCESS METHODを指定できるようになりました。
ALTER TABLE ... SET ACCESS METHOD ...;
クエリキャッシュにおける排他ロックを共有ロックに置き換えました。(Tatsuo Ishii)
これまでは、クエリキャッシュモジュールはセマフォを使用して、クエリキャッシュモジュールの重要な領域を保護していました。 ただし、セマフォを使用したロックは排他ロックであるため、これには重大な欠点があります。 これにより、多数の同時クライアントが存在する場合に、キャッシュの読み取りに不要な待機が発生し、パフォーマンスが低下します。
この問題を解決するには、ロックの実装を共有ロックを許可するflock(2)
に置き換えました。
これにより、クライアントはキャッシュから読み取る際に、ロックを取得するために待たなくて済むため、同時実行性が向上します。
この目的のために、Pgpool-IIのメインプロセスはダミーファイルをlogdir/memq_lock_fileとして作成し、それを開きます。
ファイル記述子はすべての子プロセスに継承されるため、ファイルに対してflock(2)
を発行できます。
wd_lifecheck_passwordおよびrecovery_passwordのパスワード形式を検証する処理を追加しました。(Masaya Kawamoto)
パラメータのステータス処理を強化しました。(Tatsuo Ishii)
これまでは、バックエンドからパラメータステータスメッセージが届くと、Pgpool-IIはそれを記憶していましたが、フロントエンドには転送しませんでした。 この修正により、パラメータステータスメッセージはフロントエンドに転送されるようになります。
delay_threshold_by_timeを指定した場合のレプリケーション遅延の取得方法を変更しました。(Tatsuo Ishii)
pg_stat_replication.replay_lagを使用し、レプリケーション遅延を取得します。 この方法により、コードがはるかに単純になり、より正確なレプリケーション遅延を取得できます。 唯一の欠点は、pg_stat_replication.replay_lagはPostgreSQL 10以降でのみ使用できることです (以前の方法は9.5以降で使用できます)。
フラッシュ追跡機能を実装しました。(Tatsuo Ishii)
フラッシュメッセージがフロントエンドから到着すると、バックエンドからの保留中のメッセージはすべてフラッシュされ、フロントエンドに送信される必要があります。 そのために、「フラッシュ追跡」機能を実装しました。 つまり、フラッシュメッセージが到着すると、Pgpool-IIは保留中の各メッセージに「保留中のフラッシュ」フラグを設定します。 バックエンドからの応答メッセージが、フラッシュ保留フラグが設定されている保留中のメッセージに対応する場合、 メッセージはバッファリングされるのではなく、すぐにフロントエンドにフラッシュされます。
pgprotoを強化しました。(Tatsuo Ishii)
ParameterStatusのパラメータ名と値を表示できるようにしました。
新しいコマンド'z'を追加しました。 これは'y'と似ていますが、'z'は 1 つのメッセージのみを読み取り、"ready for query" が到着するまで待機しません(または、1 秒以内にメッセージが到着しない場合はタイムアウトします)。
LOGメッセージ"new IPC connection received"をDEBUG1にダウングレードしました。 (bug 775) (Bo Peng)
これは定期的に出力される正常なメッセージで、LOGとして記録すべきではありません。 パッチはpstefによって作成され、Bo Pengによってレビューされます。
このリリースでは、Pgpool-II 4.3.4と同じバグ修正がすでに適用されています。 これらの修正の詳細については、項A.19を参照してください。
Doc: AWS設定例のドキュメントを更新し、AWS向けのサンプルスクリプトを追加しました。(Bo Peng)