Postgresql

如何為每個使用者設置語句超時?

  • March 13, 2022

我在 Postgres 中有多個使用者。我想為不同的使用者設置不同的語句超時。

例如:訪客 5 分鐘和管理員 10 分鐘。

在 Postgres 11.11 中可以嗎?

是的,Postgres 允許每個使用者甚至每個數據庫和使用者進行設置,包括statement_timeout

ALTER ROLE foo SET statement_timeout = 12345;  -- milliseconds

有關的:

要查看會話的目前活動設置:

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';

引用自:https://dba.stackexchange.com/questions/290714