为什么一个Postgres查询在两台现代机器上的性能大不相同?

我有两台机器:

机器#1:

  • 桌面
  • Intel E5200 CPU(2.5Ghz)
  • 2GB内存(DDR2)
  • 旋转硬盘(OS)和SSD硬盘(数据)

机器#2:

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

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

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

机器#1在20分钟内完成。 2号机在5小时后仍在运转。 我认为机器#2将是机器#1的速度的一半(1.3Ghz对2.5 Ghz)..也许由于更多RAM更好一点。

我把它作为一个快速testing,看看是否购买更多的内存将会在第一台机器上产生巨大的变化,但是看起来CPU扮演着更为重要的angular色。 我是对的还是还有其他事情呢?

几个问题:

  1. 机器#2上的哪些因素让它变慢?
  2. 难道是固态硬盘正在造成巨大的差异,但我不能看到它在iotop?
  3. 鉴于有限的预算..哪些升级,我可以做机#2,使其更快? 特别是内存或CPU更好的投资?

与E5200相比,E-300 CPU在合成基准testing中的速度要慢大约3倍( http://www.cpubenchmark.net/cpu_lookup.php?cpu=AMD+E-300+APU vs http://www.cpubenchmark.net /cpu_lookup.php?cpu=Pentium+Dual-Core+E5200+%40+2.50GHz )

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

这两款处理器都是桌面级的,速度相对较慢,但是即使是同一家制造商,也不能比较两个处理器的时钟频率,因为微处理器中制造工艺和技术的差异会严重改变规模。

既然你已经拥有了8GB的内存,你可能会想升级你的第二台机器上的CPU,但是我觉得你仍然在等待磁盘I / O。

你应该认真考虑以下几点:

  • 优化您的查询
  • Postgres性能调优
  • 使用可以在其上运行对该数据库的查询的服务器,或至less更强大的桌面configuration