PostgreSQL查询的性能不佳

时间:2013-09-18 08:56:26

标签: postgresql ubuntu postgis ubuntu-server

更新: 刚发生在我身上:pgAdmin是否可能不是查询的实际时间,而是计算在网格中绘制结果所需的时间?

我刚刚使用命令行(psql)执行了查询,并将结果输出到txt文件中,速度非常快(1-2秒)。

在这种情况下,问题不是postgresql / ubuntu服务器配置;它是显示适配器的问题。

我是对的还是在朝错误的方向寻找?


在Arch Linux 64bit上运行的“旧”PC(Core 2 Duo,4GB RAM,250GB SATA HD)上我可以在0.4ms内运行一个简单的“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

2 个答案:

答案 0 :(得分:2)

要在服务器上执行时间而不将数据传输到客户端,请使用 EXPLAIN ANALYZE

或者使用pgAdmin查询工具中的键盘快捷键: SHIFT F7 (根据您的操作系统和版本,查看查询菜单中的键盘快捷键)。

顺便说一句,如果您查阅pgAdmin手册,请立即使用当前版本 - 1.18:
http://www.pgadmin.org/docs/1.18/query.html

答案 1 :(得分:1)

您正在测量将行传输到pgAdmin所需的时间:

http://www.pgadmin.org/docs/1.4/query.html

“如果返回了数据集,则不仅会显示服务器执行所用的时间,还会显示从服务器检索数据到数据输出页面的时间。”

如果您尝试“从某个表中选择计数(*)”,它将与旧电脑一样快。