設定・環境 - RDB(PostgreSQL)
最終更新日: 2026-08-25
TOP(About this memo)) > 一覧(RDB) > 設定・環境(PostgreSQL)
設定・環境(PostgreSQL)
ドキュメント
設定確認
show all
select name, setting, unit from pg_settings
select name, setting, unit from pg_settings where name = 'lock_timeout'
タイムゾーン
- タイムゾーンの変更
- (参考) ALTER TIMEZONE
- ただし、一度セッションを切らないと変わらない。立ち上げているサーバーについても、同じセッションで接続しているとみなされる(?)ため、一度サーバーをリスタートしないと変わらない。
- タイムゾーンの確認
lock_timeout
- (参考) PostgreSQL: クライアント接続のデフォルト設定
lock_timeout のデフォルトは0であり、無効になっている。
- ドキュメント上は、
postgresql.conf に設定するとすべてに影響を与えるため非推奨とされている。
- (IMO) 気持ちとしてはロックはすべて待たせたくないので1msに設定したいところだが、あまり一般的ではなさそう。
statement_timeout
idle_in_transaction_session_timeout, idle_session_timeout
クライアント・サーバモデル
- (参考) PostgreSQL: アーキテクチャの基礎
- PostgreSQLはクライアント/サーバモデル。
- PostgreSQLのセッションは、以下の協調動作するプロセス(プログラム)から構成される。
- サーバプロセス: データベースサーバプログラムはpostgresと呼ばれている。
- ユーザのデータベース操作を行うクライアント(フロントエンド)アプリケーション。
- クライアントとサーバはTCP/IPネットワーク接続経由で通信を行う。
- PostgreSQLサーバはクライアントから複数の同時接続を取り扱うことができる。
- スーパーバイザサーバプロセスは常に稼働してクライアントからの接続を待ち続け、一方でクライアントからの接続と関連するサーバプロセスの起動が行われる。
- サーバは接続ごとに新しいプロセスを開始(fork)する。
- クライアントと新しいサーバプロセスは、元のpostgresプロセスによる干渉がない状態で通信を行う。
同時接続
select * from pg_stat_activity
- セッション=コネクションのことと理解している(?)。
- 最大同時接続数(デフォルトは100)
max_connections
増やしすぎるとメモリ不足によるスワップが起きる可能性もある。