为什么 Postgres 查询在两台现代机器上的性能截然不同?

为什么 Postgres 查询在两台现代机器上的性能截然不同?

我有两台机器:

机器#1:

  • 桌面
  • 英特尔 E5200 CPU(2.5Ghz)
  • 2GB 内存 (DDR2)
  • 旋转硬盘(操作系统)和 SSD 硬盘(数据)

机器#2:

  • 笔记本电脑
  • AMD E-300(1.3GHz)CPU
  • 8GB 内存 (DDR3)
  • 旋转硬盘

两台机器都运行 Ubuntu 11 和 Postgres 9.1。

我有一个大型 Postgres 数据库 (>100GB),正在运行高级查询。当我查看查询时,我看到两台机器上的 CPU 都为 100%……似乎只使用了一个核心。 iotop显示硬盘活动很少(可能突发 1MB/s)。

机器 #1 在 20 分钟内完成。机器 #2 在 5 小时后仍在运行。我估计机器 #2 的速度大约是机器 #1 的一半(1.3Ghz vs 2.5 Ghz)..可能由于 RAM 较多而略快一些。

我进行了一次快速测试,看看购买更多 RAM 是否会对机器 #1 产生巨大影响,但似乎 CPU 起着重要作用。很多更大的作用。我说得对吗,还是还有其他事情发生?

几个问题:

  1. 机器 #2 上的哪些因素导致它如此缓慢?
  2. 可能是 SSD 产生了巨大的差异,但我在 iotop 中看不到它?
  3. 预算有限,我可以对机器 #2 进行哪些升级,使其运行速度更快?特别是 RAM 或 CPU 哪个是更好的投资?

答案1

您的 E-300 CPU 在综合基准测试中比 E5200 慢了大约 3 倍(http://www.cpubenchmark.net/cpu_lookup.php?cpu=AMD+E-300+APU对比http://www.cpubenchmark.net/cpu_lookup.php?cpu=Pentium+Dual-Core+E5200+%40+2.50GHz

这就是第二台机器上的查询速度较慢的原因之一。存储数据的 SSD 驱动器可能会产生巨大影响,特别是如果您的旋转驱动器转速为 5400RPM 而不是 7200RPM,我怀疑情况确实如此。

这两款处理器都是台式机级的,速度相对较慢,但你不能比较两个处理器的时钟频率,即使是来自同一制造商,因为微处理器的制造工艺和技术的差异会严重改变尺度。

由于您已经拥有 8GB 的​​ RAM,您可能想要升级第二台机器上的 CPU,但我觉得您仍需等待磁盘 I/O。

您应该认真考虑以下问题:

  • 优化查询
  • Postgres 性能调优
  • 使用可以针对此数据库运行查询的服务器,或者至少使用更强大的桌面配置

相关内容