更新:刚刚发生在我身上:是否有可能pgAdmin不是查询的实际时间,而是在网格中绘制结果所需的时间?
我只是使用命令行(psql)执行查询并将结果输出到一个txt文件中,并且非常迅速(1-2秒钟)。
在这种情况下,问题不是postgresql / ubuntu服务器configuration; 这是一个显示适配器的问题。
我是对的还是朝着错误的方向寻找?
在Arch Linux 64bit上运行的“旧”PC(Core 2 Duo,4GB RAM,250GB SATA HD)我可以在0.4ms(我正在使用pgAdmin 3)中运行一个简单的“SELECT * FROM sometable”查询。 该数据库是一个PostgreSQL 9.1(与PostGIS)和表包含约60.000行。
我已经将数据库传输到一台较新的计算机(酷睿i5,8GB内存,1TB西数黑色SATA III),同样的查询需要22秒(!!!)。新的计算机运行Ubuntu Server 13.04 64位。
为了进一步testing,我将数据库复制到Windows 7 64位PC(Core i5,6GB RAM),并在大约10秒内运行查询。
这显然是一个configuration问题,但是我对PostgreSQL或者Ubuntu服务器的configuration问题有点困惑。
我已经尝试过使用PostgreSQL的conf文件(kernel.shmmax,shared_buffers等),但无济于事。 当然我还有VACUUMed,VACUUM ANALYZED和重新创build了所有的指标。
有任何想法吗? 我对Ubuntu服务器的解决scheme感兴趣,并不在乎Windows 7的电脑。
提前致谢,
EBL
为了在没有数据传输到客户端的情况下在服务器上获得执行时间 ,请使用EXPLAIN ANALYZE 。
或者使用pgAdmin查询工具中的键盘快捷键: SHIFT F7 (取决于您的操作系统和版本,请检查查询菜单中的键盘快捷键)。
顺便说一句,如果你参考pgAdmin手册,使用当前的版本 – 1.18截至目前:
http://www.pgadmin.org/docs/1.18/query.html
您正在测量将行传输到pgAdmin所需的时间:
http://www.pgadmin.org/docs/1.4/query.html
“如果返回数据集,则不仅显示服务器执行所用的时间,还显示从服务器检索数据到”数据输出“页面的时间。
如果您尝试“从某些表中选择计数(*)”,它将会像旧电脑一样快。