加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何减少PostgreSQL中长时间运行的i / o密集型查询的影响?

发布时间:2020-12-13 15:57:20 所属栏目:百科 来源:网络整理
导读:This post建议我可以使用游标以限制速率从查询中获取.我该怎么做呢?我的目标是减少此低优先级查询对其他优先级较高的查询的影响. 解决方法 您可以通过使用DECLARE命令声明服务器端游标来执行此操作: DECLARE my_cursor CURSOR FOR select * from foo; 然后
This post建议我可以使用游标以限制速率从查询中获取.我该怎么做呢?我的目标是减少此低优先级查询对其他优先级较高的查询的影响.

解决方法

您可以通过使用DECLARE命令声明服务器端游标来执行此操作:

DECLARE my_cursor CURSOR FOR select * from foo;

然后重复使用FETCH命令读取其结果:

FETCH 10 FROM my_cursor;

通过在FETCH命令之间休眠,您可以有效地限制查询执行的速度.

完成后,您可以通过调用COMMIT,ROLLBACK或CLOSE my_cursor来摆脱光标

请注意,某些类型的查询无法通过游标直接进行流式处理,但会在生成第一行输出之前运行完成.具有散列聚合和大型非索引排序的查询就是一个例子.您可以降低cursor_tuple_fraction设置(默认值为0.1)以阻止规划人员选择这些类型的计划,但并不总是可行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读