sql >> データベース >  >> RDS >> PostgreSQL

PgBouncer1.6の新機能

    PgBouncerは、PostgreSQL用の軽量接続プールです。

    PgBouncer 1.6は、2015年8月1日に発表されました。このブログ投稿では、PgBouncerの主な新しい改善点について説明します。

    PgBouncerの主な新機能

    postgresデータベースからユーザーパスワードハッシュをロードする

    PgBouncerでは、 auth_user の2つの構成パラメーターを使用して、データベースからユーザーのパスワードをロードできるようになりました。 およびauth_query

    • auth_user
      auth_userが設定されている場合、auth_fileで指定されていないユーザーは、auth_userを使用してデータベースのpg_shadowからクエリされます。 Auth_userのパスワードはauth_fileから取得されます。このパラメータはデータベースごとに設定することもできます。

    • auth_query
      このパラメータを使用すると、データベースからユーザーのパスワードを読み込むSQLクエリを記述できます。 auth_userの下で実行されます。以下のデフォルトのクエリを参照してください:

      SELECT usename, passwd FROM pg_shadow WHERE usename=$1

    プーリングモードは、データベースごととユーザーごとの両方で構成できます

    この機能により、メインのプーリングモードとは関係なく、クライアントは以下に説明する3つのプーリングモードのいずれかを使用してさまざまなデータベースに接続できるようになりました。これはユーザーにも当てはまります。たとえば、プーリングモードがセッションプーリングの場合、トランザクションプーリングを使用するように特定のユーザーを構成できます。これにより、データベースレベルとユーザーレベルの柔軟性が得られ、より適切なプーリングオプションを適用できます。

    PgBouncerは、3つの接続プールモードを提供します。

    • セッションプーリング
      クライアント接続の存続期間中、既存のサーバー接続がクライアントに割り当てられ、クライアントが切断された後、割り当てられたサーバー接続は接続プールに戻されます。
    • トランザクションプーリング
      このモードでは、サーバー接続は接続されたクライアントにすぐには割り当てられませんが、トランザクション中にのみ割り当てられます。トランザクションが終了するとすぐに、接続はプールに戻されます。
    • ステートメントプーリング
      これはトランザクションプーリングに似ていますが、より積極的です。シングルステートメントクエリが発行されるたびに、バックエンドが割り当てられます。ステートメントが終了すると、接続はプールに戻されます。

    データベースごとおよびユーザーごとの接続制限:max_db_connectionsおよびmax_user_connections

    この機能により、 max_db_connections という2つの新しいパラメーターを使用して、データベース/ユーザーレベルごとの接続制限も制御できるようになりました。 およびma​​x_user_connections

    • max_db_connections
      このパラメータでは、データベースごとに指定された接続数を超えることはできません(プール、つまりユーザーに関係なく)。
      このパラメータのデフォルト値は無制限です。
    • max_user_connections
      このパラメータでは、ユーザーごとに指定された接続数を超えることはできません(プール、つまりユーザーに関係なく)。

    新しい接続を防ぐためにDISABLE/ENABLEコマンドを追加します

    この機能により、PgBouncerには ENABLE / DISABLE db;があります。 新しい接続を防ぐためのコマンド。

    • DISABLE db;
      このコマンドは、指定されたデータベース上のすべての新しいクライアント接続を拒否します。
    • ENABLE db;
      このコマンドは、以前の DISABLEの後に新しいクライアント接続を許可します コマンド。

    新しい優先DNSバックエンド:c-ares

    c-ares は、すべての興味深い機能をサポートする唯一のDNSバックエンドです:更新付きの/ etc / hosts、SOAルックアップ、大規模な応答(TCP / EDNS + UDP経由)、IPv6。現在推奨されているバックエンドであり、おそらくのみ 将来のバックエンド。

    構成ファイルには「%includeFILENAME」ディレクティブがあり、構成を複数のファイルに分割できます

    この機能により、PgBouncerは他の構成ファイル内に構成ファイルを含めることをサポートします。

    つまり、PgBouncer構成ファイルには、読み取りおよび処理する別の構成ファイルを指定するincludeディレクティブを含めることができます。これにより、大きな構成ファイルをより小さく、より管理しやすいファイルに分割できます。 includeディレクティブは次のようになります:

    %include filename

    ファイル名が絶対パスでない場合は、現在の作業ディレクトリからの相対パスと見なされます。

    このバージョンでは、さらに多くの機能がリリースされています。 PgBouncerの変更ログページにアクセスするか、以下のリストでその他の改善点を確認してください。

    • SHOW CLIENTS/SERVERSにremote_pidを表示します。 UNIXソケット、およびtcpとUNIXソケットサーバーの両方を介して接続するクライアントで使用できます。 tcp-serverの場合、pidはキャンセルキーから取得されます。
    • 負のDNSキャッシングを制御するための個別の構成パラメーター(dns_nxdomain_ttl)を追加します。
    • クライアントホストのIPアドレスとポートをapplication_nameに追加します。これは、デフォルトで「オフ」に設定されている構成パラメーターapplication_name_add_hostによって有効になります。

    PgBouncerとは何ですか?

    PgBouncerは、PostgreSQLデータベースへのクライアント接続を管理するためのユーティリティです。一言で言えば、PostgreSQLサーバーへの接続プールを維持し、それらの既存の接続を再利用します。これは、クライアント接続のオーバーヘッドを減らすのに役立ちますが、データベースサーバーへの開いている接続の最大数を制限することもできます。また、1つ以上のデータベースへの接続を別のデータベースサーバーにリダイレクトするなどのトラフィックシェーピングにも使用できます。これらに加えて、PgBouncerは、ユーザーおよびデータベースレベルでさえセキュリティを管理するために使用できます。

    PgBouncerアーキテクチャをより視覚的に示した下の図を参照してください。

    この特定の例では、クライアントアプリケーションは別々のPgBouncerインスタンスに接続されており、代わりにPostgreSQLデータベースサーバーに直接接続されています。データベースサーバー「DBServer1」と「DBServer2」は、独立したPostgreSQLインスタンスである場合もあれば、異なる役割(master/replicaやwrite-master/backup-masterなど)を持つクラスターの一部である場合もあります。

    各PgBouncerインスタンスは、PostgreSQLサーバーへの多数のオープン接続を備えた接続プールを維持します。例からわかるように、PgBouncersを使用すると、さまざまなデータベースへの接続、さらにはさまざまなデータベースサーバーへの接続を備えたプールを作成できます。

    詳細

    PgBouncerのメインウェブサイトにアクセスできます:http://pgbouncer.github.io/

    すばらしいFAQページがあります:http://pgbouncer.github.io/faq.html

    プロジェクトのGithubリポジトリを確認できます:http://github.com/pgbouncer/pgbouncer


    1. MVC4:UserIsInRole-SQLServerデータベースに接続できません

    2. MySQLで最大接続数を増やす方法

    3. String []パラメータをネイティブクエリに設定するにはどうすればよいですか?

    4. WordPressデータベースからプラグインを非アクティブ化する方法