如何从PostgreSQL向客户端传递结果

3

为了进行测试,我想创建一个查询,将结果逐步返回给客户端。

它应该返回1行数据,等待一秒钟,再返回1行数据。

我尝试了简单的更改,但失败了。(它只返回了单个数据块)

select pg_sleep(1)
union all 
select pg_sleep(1)

如何制作一个逐步���回结果的查询?

1
你应该更详细地解释你的问题,比如:什么客户端?在 SQL 中,我们通过结果集逐行访问数据。因此,没有必要减慢 Postgres 的速度。数据是由客户端拉取的,而不是推送到客户端。 - Basil Bourque
@basil 我正在尝试确认我的客户端是否正确使用了libpq,特别是我想知道它是否多次等待套接字并且多次调用PQgetResult,所以我想模拟一个需要客户端这样做才能正确运行的情况。 - Sam Saffron
我在考虑可能使用第二个查询来锁定行或页面。每秒钟解锁/锁定一个不同的部分。 - Sam Saffron
1
客户端是否调用PQsetSingleRowMode(版本> = 9.2)?否则我认为PQgetResult将被阻塞,直到返回给定结果集的所有记录,因此您只会期望它被调用两次(第二次调用返回null)。 - Tim Stone
很好的观点@TimStone,尽管我用锁定技巧仍然成功崩溃了pg gem,有些可疑。 - Sam Saffron
1个回答

1
我假设您正在尝试测试数据库和客户端之间的慢连接。如果是这种情况,我不建议逐行滴漏数据,而是限制整个连接速度。您应该能够很快找到适合您需求的限制代理。快速谷歌搜索为我提供了以下结果:

https://github.com/mistakster/throttle-proxy


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接