我们有一台 8 CPU 2.5GHz 的机器和 8GB 的 RAM,它执行 SQL 查询的速度比双核 2.19GHz 的 4GB RAM 慢。
为什么会出现这种情况,因为两台机器上都安装了 Microsoft SQL Server 2000?
我们有一台 8 CPU 2.5GHz 的机器和 8GB 的 RAM,它执行 SQL 查询的速度比双核 2.19GHz 的 4GB RAM 慢。
为什么会出现这种情况,因为两台机器上都安装了 Microsoft SQL Server 2000?
此外,您可能有不同的 SQL Server 设置(内存分配和 AWE 内存、线程、最大查询内存、处理器关联、优先级提升)。
我们的多核服务器解决方案(我们的应用程序执行许多非常复杂的查询,这些查询往往会创建许多线程,这些线程有时会开始互锁甚至死锁):
sp_configure 'show advanced options', 1
reconfigure
go
sp_configure 'max degree of parallelism', 1
reconfigure
这不是理想的解决方案,但我们没有注意到其他操作的任何性能损失。
当然,您也应该优化磁盘布局,有时会限制 64 位服务器的 SQL 服务器内存。
检查两台机器上相同查询的执行计划,如果可能,请在此处发布。
很可能会是这样。
请记住,仅仅因为一台机器比另一台机器有更多的 CPU 以更高的时钟速度和内存运行,它不一定会比另一台更快地解决给定的问题。
尽管您没有提供详细信息,但 8 CPU 机器可能有 8 个插槽,每个插槽都有一个单核 CPU(比如 P4 时代的 Xeon)和 1 GB 的本地(比如 RDRAM)RAM。第二台机器是配备 4GB DDR2 RAM 的现代 Core 2 Duo。
虽然机器 #1 中的每个 CPU 具有更高的单独频率,但 netburst 架构的时钟对时钟比 Core 2 架构慢得多。此外,如果您的 CPU 负载较轻,但内存密集型负载不适合第一台机器上 CPU 的 1GB 本地内存,那么您在第一台机器上的内存访问可能会更加昂贵(因为它们必须发生)通过其他 CPU)。此外,Core 2 机器上的 DDR2 比 Xeon 中的 RDRAM 快得多。
CPU 频率和总内存并不是一切——CPU 架构、内存类型以及 CPU 和内存层次结构也很重要。
当然,正如其他答案所暗示的那样,它可能是一个更简单的答案——SQL Server 在尝试并行化查询时绊倒了自己。