Dharanidhar Reddy Asked: 2021-04-30 03:03:52 +0800 CST2021-04-30 03:03:52 +0800 CST 2021-04-30 03:03:52 +0800 CST 如何为每个用户设置语句超时? 772 我在 Postgres 中有多个用户。我想为不同的用户设置不同的语句超时。 例如:访客 5 分钟和管理员 10 分钟。 在 Postgres 11.11 中可以吗? postgresql configuration 2 个回答 Voted Best Answer Erwin Brandstetter 2021-04-30T03:37:02+08:002021-04-30T03:37:02+08:00 是的,Postgres 允许每个用户甚至每个数据库和用户进行设置,包括statement_timeout: ALTER ROLE foo SET statement_timeout = 12345; -- milliseconds 有关的: search_path 如何影响标识符解析和“当前模式” 要查看会话的当前活动设置: SHOW statement_timeout; 或者从视图中获取更多详细信息pg_settings(包括它是如何设置的): SELECT * FROM pg_settings WHERE name = 'statement_timeout'; 检查角色的当前设置: SELECT rolname, rolconfig FROM pg_roles WHERE rolname = 'foo'; rolconfig是一个数组,将其取消嵌套以获得每行一个设置: SELECT rolname, unnest(rolconfig) AS setting FROM pg_roles WHERE rolname = 'foo'; Dharanidhar Reddy 2021-04-30T03:36:50+08:002021-04-30T03:36:50+08:00 发现我们可以在Role上设置超时时间。 ALTER ROLE guest SET statement_timeout='5min'; ALTER ROLE admin SET statement_timeout='10min';
是的,Postgres 允许每个用户甚至每个数据库和用户进行设置,包括
statement_timeout
:有关的:
要查看会话的当前活动设置:
或者从视图中获取更多详细信息
pg_settings
(包括它是如何设置的):检查角色的当前设置:
rolconfig
是一个数组,将其取消嵌套以获得每行一个设置:发现我们可以在Role上设置超时时间。