jl6*_*jl6 5 postgresql throttling cursor
这篇文章建议我可以使用游标以限制的速率从查询中获取。我该怎么做呢?我的目标是减少这个低优先级查询对其他高优先级查询的影响。
您可以通过使用以下DECLARE命令声明服务器端游标来做到这一点:
DECLARE my_cursor CURSOR FOR select * from foo;
Run Code Online (Sandbox Code Playgroud)
然后FETCH重复使用该命令读取其结果:
FETCH 10 FROM my_cursor;
Run Code Online (Sandbox Code Playgroud)
通过在 FETCH 命令之间休眠,您可以有效地限制查询的执行速度。
你用它完成后,你可以通过调用摆脱光标COMMIT,ROLLBACK或CLOSE my_cursor
请注意,某些类型的查询不能通过游标直接流式传输,但会在它们产生第一行输出之前运行完成。带有散列聚合和大型非索引排序的查询就是一个例子。您可以降低cursor_tuple_fraction设置(默认为 0.1)以阻止计划者选择这些类型的计划,但这并不总是可行的。
| 归档时间: |
|
| 查看次数: |
2244 次 |
| 最近记录: |