限制PostgreSQL客户端的查询时间



我正在尝试查询PostgreSQL数据库,但这是一个公共服务器,我真的不想长时间浪费大量CPU。

因此,我想知道是否有办法将我的查询时间限制在特定的持续时间内,例如3/5/10分钟。

我假设存在类似limit的语法,但不是针对结果数量,而是针对查询持续时间。

谢谢你的帮助。

设置statement_timeout,如果超过该限制,则查询将以错误终止。

根据本文件:

statement_timeout(整数(

中止任何花费超过指定的毫秒数,从命令从客户端到达服务器。如果log_min_error_startment设置为error或更低超时也将被记录。值为零(默认值(时关闭。

不建议在postgresql.conf中设置statement_timeout因为它会影响所有会话。

以下是使用LIMIT控制查询运行时间的潜在问题。正确的是,您还应该在查询中使用ORDER BY,告诉Postgres它应该如何准确地限制结果集的大小。但这里需要注意的是,当将LIMITORDER BY一起使用时,Postgres通常必须实现整个结果集,然后还可能进行排序,这可能需要比读取整个结果集更长的时间。

对此的一个解决方法可能是只使用LIMIT而不使用ORDER BY。如果执行计划不包括读取整个表和排序,那么这可能是实现您想要的操作的一种方法。然而,请记住,如果你走这条路,Postgres将有免费的许可证,可以按任何顺序从表中返回任何记录。从业务或报告的角度来看,这可能不是您想要的。

但是,这里更好的方法是使用索引之类的东西来调整查询,并使其更快地达到不需要使用LIMIT技巧的程度。

最新更新