user icon

PostgreSQLのstatement_timeoutを指定ユーザにだけ設定する

通常使うユーザの行うpg_dumpやvacuumdbには影響させたくないので、ユーザAが実行している時だけ30秒でstatement_timeoutさせたい。
と言った時に、セッションごとに SET statement_timeout をやるのも面倒だし入力漏れが出るので、ユーザAだけデフォルトで30秒に出来れば楽です。

そんなわけで、ユーザのデフォルト値を設定します。
ALTER ROLE [ユーザA] SET statement_timeout TO 30000; -- 30sec
SHOW statement_timeout; -- セッション中は以前の設定のまま変わらず?
セッション終了後に有効になるようですので、一旦セッションを終了させ再度セッションに入って確認します。
SHOW statement_timeout; -- 30000 で出力
  • この後、リスタートしても値は保持されていました。
  • 他の未設定ユーザで見ると、初期値が出力されます(postgresql.confのデフォルトは0)。
  • またユーザ設定していても、セッション内のSET statement_timeoutでセッション中のみ上書き可能です。
ちなみに、1(1ミリ秒)に設定すると\dすら失敗します(でもSETで上書きは出来ました)。
そう言うユーザ作るメリット有るかは疑問ですが。
Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)