コネクションプール

PostgreSQLはクライアントから接続されると、postmasterというプロセスがバックエンドプロセスを生成し、認証処理を行う。認証が成功したところで初めてデータベースへのアクセスの準備を行う。この一連の流れはコストが高く、頻繁にデータベースへ接続するようなアプリケーションの場合、接続処理がボトルネックになる。

pgpool-IIでは接続したオブジェクトをプールさせておき、また同じ接続リクエストが来た場合にはプールされている接続を再利用する。この仕組みをコネクションプールと呼ぶ。pgpool-IIでコネクションプールを利用したい場合、以下の内容をpgpool.confに記述する。なお、ここでの例ではPostgreSQL サーバがlocalhostの5432ポートで動いているものとする。

pgpool.conf

# ポート番号
port = 9999

# コネクションプール利用
connection_cache = true

# 同時接続数
num_init_children = 100

# localhost の5432ポートで動作しているサーバの設定
backend_hostname0 = 'localhost'
backend_port0 = 5432
backend_weight0 = 1

# クライアント認証を有効にしない
enable_pool_hba = false

pgpool-IIにpsqlで接続する場合は、-pオプションでポート番号(9999)を指定する。pgpool-IIでは、psql以外にJDBCドライバなどといった別の接続ドライバを使った場合にもpgpool-IIのコネクションプールを利用することができる。

% createdb -p 9999 pool
% psql -p 9999 pool