2

在 PostgreSQL 下的 Azure 门户中,服务器配置 statement_timeout 控制以下内容。

“设置任何语句的最大允许持续时间(以毫秒为单位)。0 将其关闭。”

设置后似乎没有办法覆盖该设置。我们使用 Npgsql 的 .NET Provider 并尝试在连接字符串上设置 timeout=0 和命令 timeout=0 以查看是否会覆盖,但它似乎对超时没有影响。我们不想禁用它或将其设置为较大的间隔,但是我们有一些运行时间很长的存储过程,并且希望在每个语句的基础上进行设置。

谢谢你。

4

1 回答 1

4

您可以在事务级别设置 statement_timeout。在下面的例子中,我启动一个事务,设置超时,调用 postgres 的 sleep 函数,然后标记事务的结束。

BEGIN; SET LOCAL statement_timeout = 2000; SELECT pg_sleep(3); COMMIT;

请注意,由于 sleep 函数超时(标记为ERROR),事务将回滚。

或者,您可以使用仅在会话级别设置 statement_timeout SET

关于SET和的信息SET LOCALhttps ://www.postgresql.org/docs/10/sql-set.html

于 2019-04-05T18:35:35.867 回答