更新: 刚发生在我身上: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
答案 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
“如果返回了数据集,则不仅会显示服务器执行所用的时间,还会显示从服务器检索数据到数据输出页面的时间。”
如果您尝试“从某个表中选择计数(*)”,它将与旧电脑一样快。