【发布时间】:2018-04-24 14:21:52
【问题描述】:
我在一家小公司(约 15 名员工)工作,我们在公司服务器中存储了一个 postgreSQL 数据库。
我通常从我自己的计算机(我将在下文中称为“客户端”)运行查询,并且获取结果通常不会显着增加查询持续时间。
但是,今天,我运行了来自客户端的请求,运行时间为 2 小时 10 分钟。但我很惊讶在我的屏幕上看到以下内容:
Query returned successfully in 10:35 minutes.
我认为这意味着服务器本身的计算持续了 10 分钟,而其余时间(2 小时...)仅用于从服务器获取结果到客户端。
然后,我尝试从客户端运行另一个查询(即执行函数pgr_CreateTopology 来查找图的顶点)。我直到最后才运行它,但它似乎很慢:在 20 分钟内只创建了 6000 个顶点,而我的图中大约有 300'000 个顶点,这意味着查询大约需要 15 小时才能完成.
我中止了这个查询并再次运行它,但这次是从服务器上运行的。它在 12:42 分钟内完成。
从服务器运行十几分钟,从客户端运行十几个小时......如何解释这样的性能差异?
我想再次提及一个事实,通常,对于简短的查询,当我使用 EXPLAIN 时,我从来没有找到代表大部分查询持续时间的获取结果,因为我们有一个快速的内部网络。
【问题讨论】:
-
@Johan 在
postgresql.conf文件中,我有#ssl = off。 -
哦,我现在明白了。
ssl = off之前的哈希字符#表示这是一个注释行,即它没有被考虑在内。我删除了哈希,现在参数ssl实际上设置为off。我再次从客户端运行查询,它确实快得多。感谢您的帮助。
标签: postgresql query-performance