将所有postgres数据库的查询超时设置为60分钟

问题描述

我必须将Postgres数据库查询超时设置为60分钟。我在下面有Postgres数据库配置文件

  1. pg_ctl.conf
  2. pg_hba.conf
  3. pg_ident.conf
  4. postgresql.conf
  5. start.conf

在postgresql.conf文件中,我看到有字段;

#statement_timeout = 0      # in milliseconds,0 is disabled
#lock_timeout = 0           # in milliseconds,0 is disabled

我的问题是,我需要取消注释/设置60分钟的哪个字段?

有人请帮忙吗?还是我需要在配置文件添加其他内容

谢谢。

解决方法

要为查询超时设置全局默认值,请使用statement_timeout,例如

statement_timeout = 60min

Quote from the manual

中止所有花费时间超过指定时间的语句。 [...]如果不带单位指定此值,则以毫秒为单位。零(默认值)将禁用超时。
超时是从命令到达服务器的时间到服务器完成命令为止的时间。

如果您只想对特定用户执行此操作,则不必全局(对每个用户)执行此操作:

alter user the_user_to_control 
    set statement_timeout = '60min';

这将更改当前数据库中指定用户的值。如果确实在每个数据库中都需要它,则将需要在每个数据库中运行该语句。