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
等等,但没有任何成功。
我能做什么?
【问题讨论】:
您阅读了所有文档? 在客户端尝试\copy
与psql
- 可能显示数据需要很长时间,而不是传输?..
【参考方案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 通过网络非常缓慢地发送查询结果的主要内容,如果未能解决你的问题,请参考以下文章