【发布时间】:2013-09-22 22:52:51
【问题描述】:
更新: 突然想到:pgAdmin 统计的可能不是查询的实际时间,而是在网格中绘制结果所需的时间?
我刚刚使用命令行 (psql) 执行了查询并将结果输出到一个 txt 文件中,而且速度非常快(最多 1-2 秒)。
在这种情况下,问题不在于 postgresql / ubuntu 服务器配置;而是显示适配器的问题。
我是对的还是在寻找错误的方向?
在运行 Arch Linux 64 位的“旧”PC(Core 2 Duo,4GB RAM,250GB SATA HD)上,我可以在 0.4 毫秒内运行一个简单的“SELECT * FROM sometable”查询 (我正在使用 pgAdmin 3)。该数据库是 PostgreSQL 9.1(带有 PostGIS),该表包含大约 60.000 行。
我已将数据库转移到一台较新的计算机(Core i5、8GB RAM、1TB Western Digital Black SATA III),同样的查询需要 22 秒(!!!) 较新的计算机正在运行 Ubuntu Server 13.04 64 位。
为了进一步测试,我将数据库复制到一台 Windows 7 64 位 PC(Core i5,6GB RAM)上,查询运行大约需要 10 秒。
明明是配置问题,但我有点搞不懂是PostgreSQL还是Ubuntu Server的配置问题。
我已经尝试过使用 PostgreSQL 的 conf 文件(kernel.shmmax、shared_buffers 等)但无济于事。 当然,我已经 VACUUMed、VACUUM ANALYZed 并重新创建了所有索引。
有什么想法吗?我对 Ubuntu Server 的解决方案感兴趣,并不真正关心 Windows 7 计算机。
提前致谢,
Ebl
【问题讨论】:
-
你看过不同机器上的查询计划吗?
EXPLAIN ANALYZE? -
是的。我刚刚又做了一次(在 Ubuntu 和 Windows 7 机器上,我暂时无法访问 Arch Linux)。查询计划几乎相同。
-
而不是 pgAdmin,我会使用 psql 和
EXPLAIN ANALYZE,将网格绘图排除在等式之外。 -
我已经这样做了,
explain analyze显示了类似的结果。因此,没有必要进一步调查。无论如何,谢谢你们的 cmets 伙计们! -
PGAdmin 在过去给了我奇怪的行为......它似乎在幕后调用挂起和扩展运行时的系统表。在进行速度测试时避免使用 PGAdmin。我也遇到过索引没有正确填充、删除和重新创建它们的问题,过去对我有帮助(解释语句应该显示它是否正确使用索引)。最后......我遇到了多处理器机器的问题从 PGAdmin 运行 SQL...出于某种原因,PGAdmin 可以决定只使用一个处理器并在该处理器上发送所有内容。监控您的流程并运行查询
标签: postgresql ubuntu postgis ubuntu-server