我有两台机器:
机器#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 起着重要作用。很多更大的作用。我说得对吗,还是还有其他事情发生?
几个问题:
- 机器 #2 上的哪些因素导致它如此缓慢?
- 可能是 SSD 产生了巨大的差异,但我在 iotop 中看不到它?
- 预算有限,我可以对机器 #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 性能调优
- 使用可以针对此数据库运行查询的服务器,或者至少使用更强大的桌面配置