繁体   English   中英

如何通过高延迟连接使用Npgsql有效执行Postgresql查询?

[英]How to efficiently execute Postgresql query using Npgsql over a high latency connection?

通过高延迟连接(200-300毫秒)使用Npgsql选择充满字符串数据的大表时,我遇到了麻烦。 总字段值大小约为256kb。 我完全确定问题与网络传输有关,因为如果我在很短的时间内(10毫秒-20毫秒)执行本地查询,而不是通过慢速连接执行查询,则会导致该问题20-30秒。 另外,如果我使用长度(字段)测量表,则查询将在适当的时间(1-2秒)内执行。 我在不同的PC,不同的postgresql版本和npgsql上遇到此问题。 我认为问题与数据包的大小有关。也许增加缓冲区可以解决我的问题,但是,怎么办呢? 在postgres中? 还是在npgsql中?

根据评论,您正在使用SSH隧道。

像SSH一样,TCP-in-TCP隧道绝对无法承载大量数据。 期望它表现出色。 拥塞控制和窗口缩放无法正常工作,重新传输是一个问题,重新排序和重组效率低下,慢启动无法正常工作等。

只是不要那样做。 将直接TCP / IP与SSL一起使用,或使用基于UDP的隧道/ VPN。

PostgreSQL的协议对流水线非常友好,它在获取结果时要求每个字段或每行获取零往返。 您只要继续阅读,直到没有其他内容可供阅读为止。 因此往返延迟不是这里的问题。

这很可能是隧道引起的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM