目标
分析师的临时查询偶尔运行数分钟,占住连接并压缩应用可用容量。本配方为专用报表角色设置 statement_timeout 与 idle_in_transaction_session_timeout,使新会话在超时后取消语句而不是耗尽连接池;同时提醒超时不能加速坏查询,只能限制损害,必要时另设长查询角色。
步骤要点
- 为报表角色设置合理的默认语句与空闲事务超时。
- 在会话中查询 pg_settings 验证设置已继承。
- 对确实需要长查询的场景另设独立角色。
- 对大导出采用可分段或可续跑的方式。
ALTER ROLE analyst SET statement_timeout = '30s';
ALTER ROLE analyst SET idle_in_transaction_session_timeout = '60s';
排错提示
- 超时不能加速坏查询,只能限制损害。
- 取值过小会造成误取消。
- 不影响其他角色。
适用边界
- 不改变查询本身的性能。
- 需要慎重选择超时阈值。