假设我有一个 32 位 Windows Server 机箱,其中运行多个服务器应用程序以及一个 SQL Server,高峰时段的 RAM 使用量约为 2 GB。
将 Windows Server OS 和 SQL Server 升级到相应的 64 位版本,而服务器应用程序仍为 32 位,这样做有什么好处?64 位版本允许访问超过 4 GB 的 RAM,但由于 4 GB 尚未得到充分利用,这是否会导致升级毫无意义?
版本:Windows Server 2008 R2、SQL Server 2008 R2 数据中心版
谢谢
答案1
密切相关:保留 32 位 Microsoft Windows 桌面操作系统的充分理由
你是使用 64 位操作系统。Server 2008 R2 是第一个仅支持 64 位 CPU 的版本。
“较新”版本的 Windows 甚至不是为 32 位设计的。您可能不会利用任何优势,但也不应该有任何缺点。话虽如此:无论如何都要升级,例如 Server 2008 R2 SP1(我希望您正在使用它)将于 2020-01-14 停止服务。
至于 SQL Server 32 位/64 位:您的理解是正确的,如果您永远不需要 > ~3.75 GB 的 RAM(或每个进程 >2 GB),那么您可以毫无问题地使用 32 位版本。但对于较新的版本,将不会有任何 32 位版本可供安装,因为 Microsoft 已切换到仅 64 位。
答案2
如上所述,您已经在使用 64 位操作系统。切换到 64 位版本的 SQL Server 有两个优点和一个缺点。
唯一的缺点是 64 位版本的 SQL Server 将使用 64 位指针。这意味着指针将占用两倍的内存,消耗两倍的内存带宽,等等。这可能相当微不足道,但这是一个缺点。它部分地被这样一个事实所弥补:切换到 64 位应用程序将允许您放弃 32 位应用程序必须使用兼容层来访问 64 位操作系统的功能的开销。
主要优点是随着时间的推移,CPU 指令集得到了许多重大改进。其中一些是随着 64 位的改变而进行的,而另一些则是之前进行的。
但即使对于以前制作的版本,32 位版本也必须处理没有这些功能的 CPU,并且为了避免检测和在多个实例之间切换的麻烦,即使存在它们也不会使用它们。例如,64 位 CPU 必须具有 SSE2,但 32 位 CPU 可能没有。因此,大多数 32 位代码根本不会费心检查并假设没有 SSE2。64 位代码确保 SSE2 指令存在,因此如果这是最佳选择,则会使用它。
最大的变化是命名通用寄存器的数量从 8 个增加到了 16 个。128 位 XMM 寄存器的数量也增加了一倍,从 8 个增加到了 16 个。
此外,64 位进程可以使用大量虚拟内存。这对于访问磁盘上大量结构化数据的进程尤其重要。当然,它们可以使用 64 位整数运算,这往往会提高加密、压缩甚至大型文件系统上某些文件系统操作的性能。
答案3
从根本上讲:是的。假设您从不进行仅 4 位的更新 - 不确定是否存在比 2008 更新的 32 位 SQL Server。
您的问题存在问题:“64 位版本允许访问超过 4 GB 的 RAM” - 将其设为 3gb;)而不是 4。1gb 始终被保留。
答案4
表现!
这里已经有几个技术答案,但不需要太过技术性,而且根据您的应用程序,您应该会看到性能的升级。
主要部分包括:
大内存寻址:64 位架构提供了更大的直接可寻址内存空间。SQL Server 2005(64 位)不受 32 位系统 4 GB 内存限制的约束。因此,可以使用更多内存来执行复杂查询和支持基本数据库操作。这种更大的处理能力通过使用比传统 32 位系统更多的内存来减少 I/O 延迟的损失。
增强并行性:64 位架构提供高级并行和线程处理。并行处理和总线架构的改进使 64 位平台能够支持更多处理器(最多 64 个),同时通过增加每个处理器提供接近线性的可扩展性。有了更多的处理器,SQL Server 可以在单个系统中支持更多进程、应用程序和用户。
https://teratrax.com/sql-server-64-bit/
从 32 位升级到 64 位 SQL Server(即 SQL Server 2005)后,我看到的最显著的结果是客户端主要应用程序的速度提高了约 40%。我们所做的就是安装 64 位 SQL Server,其他一切都一样!这在现实世界中是一次重大的性能提升。