将 32 位 Windows Server 和 SQL Server 升级到 64 位的优势?

Som*_*one 13 64-bit 32-bit 32bit-64bit sql-server

假设我有一个 32 位 Windows Server 机器,它运行多个服务器应用程序和一个 SQL Server,在高峰时间使用大约 2 GB 的 RAM。

将 Windows Server 操作系统和 SQL Server 升级到相应的 64 位版本,而服务器应用程序保留为 32 位版本有什么好处?64 位版本允许访问超过 4 GB 的 RAM,但由于 4 GB 没有得到充分利用,这会使升级没有实际意义吗?

版本:Windows Server 2008 R2、SQL Server 2008 R2 数据中心版

谢谢

Len*_*iey 19

密切相关:保留 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 位。

  • OP 提到“高峰时间为 2 GB”,因此 SQL Server 完全有可能希望使用超过 2 GB,但由于 32 位进程限制而无法使用。 (6认同)

Dav*_*rtz 11

如前所述,您已经在使用 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 位整数运算,这往往会提高加密、压缩的性能,甚至可以提高大型文件系统上的某些文件系统操作的性能。


Tom*_*Tom 6

从根本上说:是的。假设您从不进行仅 4 位的更新 - 甚至不确定是否有比 2008 年更新的 32 位 SQL Server。

您的问题有问题:“64 位版本允许访问超过 4 GB 的 RAM,” - 使 3gb ;) 不是 4。1gb 始终保留。

  • @Voo:SQL Server 是少数知道如何操作的程序之一。 (3认同)

mir*_*lav 6

潜在问题:CLR 用户定义函数 (UDF) 的 DLL 库需要 64 位版本。

如果您使用的是CLR 用户定义函数库,它将变得不兼容。32 位 DLL 通常不能用于 64 位软件,反之亦然。如果您无法获得您使用的某些 UDF 库的 64 位版本,您将丢失该特定扩展。

基本上,这与将任何带有附加组件的 32 位软件升级到 64 位版本的问题相同。您还需要将所有附加组件切换到其 64 位版本。一般来说,这很容易,但问题是停产的,没有替代品。