コネクションプール
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