PostgreSQL服务器statement_timeout为0时,会话设置该参数的效果咨询
关于PostgreSQL statement_timeout会话级设置的效果
首先纠正你的推测:会话级的statement_timeout设置优先级高于全局配置,哪怕全局参数设为0(即全局关闭查询超时),只要你在当前会话里执行了SET statement_timeout = '2s';,这个会话中所有执行时长超过2秒的查询都会被PostgreSQL强制终止。
具体验证操作(可在测试库再次确认):
- 查看全局配置:
SHOW statement_timeout;,结果应为0 - 在当前会话内设置超时:
SET statement_timeout = '2s'; - 执行一个耗时超2秒的查询,比如:
SELECT pg_sleep(3); - 此时会收到类似
ERROR: canceling statement due to statement timeout的报错,说明查询已被成功终止
PostgreSQL的参数生效优先级是:会话级临时设置 > 用户默认设置 > 数据库默认设置 > 全局配置文件设置。全局的0只是默认值,会话内的临时设置会直接覆盖它,不会因为全局关闭就失效。
内容的提问来源于stack exchange,提问作者Vasileios Giannakidis
相关产品推荐
相关产品推荐

