首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >限制PostgreSQL客户端的查询时间

限制PostgreSQL客户端的查询时间
EN

Stack Overflow用户
提问于 2020-02-18 15:02:10
回答 2查看 3.6K关注 0票数 4

我试图查询PostgreSQL数据库,但这是一个公共服务器,我真的不想浪费很多CPU很长一段时间。

因此,我想知道是否有什么方法可以限制我的查询时间,例如,3/5/10分钟。

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

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-18 15:29:53

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

根据文档:

statement_timeout (整数) 从命令从客户端到达服务器的时间开始,中止占用指定毫秒数的任何语句。如果log_min_error_statement设置为错误或更低,那么超时的语句也将被记录下来。如果值为零(默认值),则会关闭此选项。 不建议在statement_timeout中设置postgresql.conf,因为它会影响所有会话。

票数 9
EN

Stack Overflow用户

发布于 2020-02-18 15:09:01

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

解决这一问题的方法之一可能是不使用LIMIT而不使用ORDER BY。如果执行计划不包括读取整个表和排序,那么它可能是实现您所需的一种方法。但是,请记住,如果您走这条路线,Postgres将获得免费许可,可以按任何顺序从它希望的表中返回任何记录。从业务或报告的角度来看,这可能不是您想要的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60283821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档