【问题标题】:Poor performance on a PostgreSQL queryPostgreSQL 查询性能不佳
【发布时间】: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


【解决方案1】:

要在不向客户端传输数据的情况下获得服务器上的执行时间,请使用 EXPLAIN ANALYZE

或使用 pgAdmin 查询工具中的键盘快捷键:SHIFTF7(取决于您的操作系统和版本,请查看查询菜单中的键盘快捷键)。

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

【讨论】:

    【解决方案2】:

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

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

    " 如果返回一个数据集,不仅会显示服务器执行的经过时间,还会显示从服务器检索数据到数据输出页面的时间。"

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多