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


13

假设我有一个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数据中心版

谢谢

Answers:


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位。


6
OP提到“高峰时间为2 GB”,因此SQL Server完全有可能要使用超过2 GB的内存,但由于32位进程限制而不能使用。
MonkeyZeus

可能是这样,我真的不知道MS SQL Server 2008是否将多个进程用于不同的任务/实例/数据库/等等
。– Lenniey

11

如前所述,您已经在使用64位操作系统。切换到64位版本的SQL Server有两个优点,一个缺点是。

唯一的缺点是SQL Server的64位版本将使用64位指针。这意味着指针将占用两倍的内存,消耗两倍的内存带宽,依此类推。这可能几乎可以忽略不计,但这是一个缺点。切换到64位应用程序将使您省去兼容性层的开销,这部分补偿了32位应用程序必须用来访问64位OS的功能的事实。

主要优势在于,随着时间的流逝,CPU指令集获得了许多重大改进。其中一些是在更改为64位的同时进行的,而某些是先前进行的。

但是,即使对于以前制造的实例,32位版本也必须处理不具有这些功能的CPU,并避免在多个实例之间进行检测和切换的麻烦,即使存在实例也不要使用它们。例如,64位CPU必须具有SSE2,但32位CPU可能没有。因此,大多数32位代码只是不打扰检查并且不假设SSE2。确保有64位代码存在SSE2指令,因此,如果这是最佳选择,则将使用它。

最大的一个是命名的通用寄存器的数量从8增加到16。128位XMM寄存器的数量也增加了一倍,从8增加到16。

另外,一个64位进程可以利用大量的虚拟内存。这对于访问磁盘上大量结构化数据的进程尤为重要。而且,当然,他们可以使用64位整数操作,这些操作往往会提高加密,压缩甚至大型文件系统上某些文件系统操作的性能。


AVX和共同说明真的对SQL Server性能产生显着影响吗?我会假设(但是我从未对其进行过基准测试或测试)它主要是它所依赖的IO子系统。
Voo

某些现代的32位代码确实采用了SSE2,尤其是在仅支持足够新的CPU具备SSE2(以及一些其他必需功能)的OS上运行时。我假设微软用MSVC编译他们的东西,MSVC可以/arch:SSE2选择32位代码,相当于gcc / clang / ICC -msse2。我猜想SQL没有很多SIMD向量化循环,但是复制带有16字节SIMD加载/存储的小型结构是很好的。
彼得·科德斯

x86-64中最重要的变化之一是相对于PC的寻址,可实现高效的位置无关代码。与32位非PIC相比,32位PIC库通常具有〜10%或〜15%的减慢(IIRC)。拥有更多的整数寄存器也有很大帮助。64位的一大优势是更好的调用约定,但是在Windows(与Linux不同)上,32位代码确实__fastcall在许多功能的寄存器中传递了args。Linux 32位调用约定完全在堆栈上,因此对于不内联的小功能来说,这是很废话的。
彼得·科德斯

如果矢量化对性能确实很重要,而不是假设/要求某种特定的支持级别,那么代码可能正在检查CPU支持的最新SSE / AVX版本,并调用适当的实现以从运行的任何系统中获得最大的速度。上。
Dan在Firelight的抚养下,

@DanNeely假定进行构建的人都在努力提高32位版本的性能。至少从我的经验来看,他们经常认为关心性能的人员将使用64位版本。
David Schwartz

6

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

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


如果我们很挑剔,为什么不正确,并提到32位程序可以轻松访问数百GB的RAM?;)只有虚拟地址空间受到限制。
Voo

3
@Voo:SQL Server是少数几个知道怎么做的程序之一。
joshudson

6

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

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

基本上,这与将任何带有其附件的32位软件升级到其64位版本是相同的问题。您还需要将所有加载项切换到其64位版本。通常,这很容易,但是问题是无法替代的已停产的产品。


3

性能!

这里已经有几个技术上的答案,但是没有太过技术性,并且根据您的应用程序,您应该看到性能提升。

主要部分是:

大内存寻址: 64位体系结构提供了更大的可直接寻址的存储空间。SQL Server 2005(64位)不受32位系统的4 GB内存限制的约束。因此,更多的内存可用于执行复杂的查询并支持基本的数据库操作。与传统的32位系统相比,这种更大的处理能力通过利用更多的内存来减少I / O延迟的代价。

增强的并行性: 64位体系结构提供了高级并行性和线程。并行处理和总线体系结构的改进使64位平台能够支持更多数量的处理器(最多64个),同时每个附加处理器都提供接近线性的可扩展性。使用大量的处理器,SQL Server可以在单个系统中支持更多的进程,应用程序和用户。

https://teratrax.com/sql-server-64-bit/

从32位SQL Server升级到64位SQL Server(这是SQL Server 2005)时,我看到的最引人注目的结果是将客户端的主要应用程序的速度提高了40%。我们要做的就是安装64位SQL Server,其他所有内容都是一样的!这是现实世界中的主要性能提升。


-2

您可以具有更好的多任务处理性能,尤其是对于内置大量多线程的程序。此外,您可以在64位操作系统上安装更多ram。但是,只有在处理器支持64位指令时,才执行此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.