客户端的PostgreSQL查询比服务器的查询慢得多
我在一家小公司工作(约15名员工),公司服务器中存储有一个postgreSQL数据库 我通常从自己的计算机上运行查询(我将在下文中称之为“客户机”),获取结果通常不会显著增加查询持续时间 然而,今天,我运行了一个来自客户端的请求,运行了2小时10分钟。但我很惊讶地在屏幕上看到以下内容:客户端的PostgreSQL查询比服务器的查询慢得多,postgresql,query-performance,Postgresql,Query Performance,我在一家小公司工作(约15名员工),公司服务器中存储有一个postgreSQL数据库 我通常从自己的计算机上运行查询(我将在下文中称之为“客户机”),获取结果通常不会显著增加查询持续时间 然而,今天,我运行了一个来自客户端的请求,运行了2小时10分钟。但我很惊讶地在屏幕上看到以下内容: Query returned successfully in 10:35 minutes. 我认为这意味着服务器上的计算持续了10分钟,其余时间(2小时…)仅用于从服务器向客户端获取结果 然后,我尝试从客户端运
Query returned successfully in 10:35 minutes.
我认为这意味着服务器上的计算持续了10分钟,其余时间(2小时…)仅用于从服务器向客户端获取结果
然后,我尝试从客户端运行另一个查询(即,执行函数pgr\u createtopoly
,以查找图形的顶点)。我直到最后才运行它,但它似乎非常慢:在20分钟内只创建了6000个顶点,在我的图中大约有30万个顶点,这意味着查询需要大约15个小时才能完成
我中止了这个查询并再次运行它,但这次是从服务器上运行的。12点42分就完成了
从服务器上运行12分钟,从客户端运行12小时。。。如何解释这种性能差异
我想再次提到一个事实,通常,对于短查询,当我使用EXPLAIN时,我从未发现获取结果代表大部分查询持续时间,因为我们有一个快速的内部网络。事实上,问题与此问题相同:
通过在
postgresql.conf
配置文件中设置SSL=off
关闭SSL压缩,然后重新启动postgresql服务器,解决了这个问题。你检查过了吗?@Johan在postgresql.conf
文件中,我有#SSL=off
。哦,我现在明白了。ssl=off
之前的散列字符#
表示这是一个注释行,即不考虑它。我删除了散列,现在参数ssl
实际上设置为off
。我再次从客户端运行查询,它确实快得多。谢谢你的帮助。