← 中文资源

简体中文版本

按角色设置语句超时

为报表角色设置默认 statement_timeout,避免失控查询长期占用连接并拖垮连接池。

阅读英文原文

目标

分析师的临时查询偶尔运行数分钟,占住连接并压缩应用可用容量。本配方为专用报表角色设置 statement_timeout 与 idle_in_transaction_session_timeout,使新会话在超时后取消语句而不是耗尽连接池;同时提醒超时不能加速坏查询,只能限制损害,必要时另设长查询角色。

步骤要点

  1. 为报表角色设置合理的默认语句与空闲事务超时。
  2. 在会话中查询 pg_settings 验证设置已继承。
  3. 对确实需要长查询的场景另设独立角色。
  4. 对大导出采用可分段或可续跑的方式。
ALTER ROLE analyst SET statement_timeout = '30s';
ALTER ROLE analyst SET idle_in_transaction_session_timeout = '60s';

排错提示

  • 超时不能加速坏查询,只能限制损害。
  • 取值过小会造成误取消。
  • 不影响其他角色。

适用边界

  • 不改变查询本身的性能。
  • 需要慎重选择超时阈值。