Postgresql 通过网络非常缓慢地发送查询结果

Posted

技术标签:

【中文标题】Postgresql 通过网络非常缓慢地发送查询结果【英文标题】:Postgresql sending the query result very slowly via network 【发布时间】:2017-01-19 09:07:18 【问题描述】:

我花了几天时间修复运行缓慢的 sql 查询,但没有成功。我发现了很多类似的问题和答案,但我有一个不同的问题:

-我有一个包含 5000 条记录和 30 列的简单表格 -我通过 pgAdmin3 发送了一个简单的select * from this_table 命令并工作了 15-20 秒以显示结果

没有JOIN,也没有WHERE

我意识到,当查询运行时,postgresql 通过 LAN 向客户端发送数据只有 4 Mb/ps。我有千兆局域网。文件副本、ftp 和其他任何东西都在此服务器上的同一通道上以 700-800 Mb/ps 的速度运行。

我已经使用 psql 命令在服务器控制台上测试了相同的 sql 命令。查询仅几毫秒就完成了,这没关系。我没有磁盘和任何文件问题。

我已经阅读了有关 postgresql 配置的所有文档,增加了work_mem 等等,但没有任何成功。

我能做什么?

【问题讨论】:

您阅读了所有文档? 在客户端尝试\copypsql - 可能显示数据需要很长时间,而不是传输?.. 【参考方案1】:

时间几乎肯定花在 pgAdmin III 上,检查进程的 CPU 利用率以确定。显示大型结果集可能需要 pgAdmin III 很长时间。

也许你应该改用psql

【讨论】:

感谢您的回答。 CPU 运行在 5-10%。我在 Mikrotik 路由器上看到了网络进程。我确切地看到,数据以 4mbps(缓慢)从服务器移动到客户端。正如我所写,在服务器上,结果会在几毫秒内显示出来。 在客户端机器上使用psql性能如何? 操作!来自客户端的 psql 以 431 Mbps 的速度读取......(快 100 倍......)现在,我意识到 pgAdmin 真的很慢,我必须检查 devart dotConnect 组件以加快我的 Windows 应用程序软件的速度。现在,我确定,服务器端、网络等都可以。也许我会尝试 odbc 连接。谢谢你的评论! 是的,从应用程序内部使用 pgAdmin III 几乎可以肯定是不正确的。如果您计划使用 .NET,为什么要使用 ODBC 连接?使用您正在使用的编程语言的本机界面。 我在我的 .NET 应用程序中使用 DevartDot Connect 组件(不是免费组件)。现在,我将检查我的代码和加快速度的可能性。

以上是关于Postgresql 通过网络非常缓慢地发送查询结果的主要内容,如果未能解决你的问题,请参考以下文章

限制 PostgreSQL 最小时间间隔的结果行

postgresql,查询运行缓慢

如何在全范围内平均减少 SQL 查询的结果行?

更新查询 Postgresql 更新缓慢

针对多个表优化缓慢的 postgresql 查询

使用PostgreSQL进行简单而缓慢的SQL查询