我应该安装32位数据库还是64位数据库?

(我已经读了很多关于64位和32位操作系统/应用程序,但这个问题是专门针对数据库。)

我试图了解32位与64位数据库的优缺点,也就是说,在什么条件下,使用64位安装才有意义。

我感兴趣的数据库系统是:SQL Server 2008,MySQL和PostgreSQL 9.0。

我已经读过PostgreSQL 9.0以前的版本只能在32位版本的Windows上运行 , 这篇关于在64位Windows上运行32位PostgreSQL的文章清除了我的一些疑惑,但是我正在寻找更多的信息。

我什么时候可以从使用64位数据库(例如数据库大小/磁盘空间,可用的系统内存,已知可从中受益的数据sernarios的types,正在使用的数据库引擎等)中受益?

在什么条件下开始使用64位安装是有意义的。

除了是愚蠢的以外。 对不起 – 在64位服务器上安装32位数据库有什么好处? 而且 – 试想一下,SERVER 2008R2只有64位可用。

有 – 今天 – 没有情况下安装一个32位的SQL Server版本是有意义的,如果有机会。

数据库是特定的 – 因为他们想要使用大量的内存作为caching,如果有必要的话。 比微不足道的2GB / 3GB一个32位的进程可以给他们多得多。 PAE是不一样的。 即使忽略了限制,PAE内存不等于SQL Server的实际内存(它只用于一件事 – caching数据库页)。

32位操作系统 – 是在同一水平上。 现代硬件根本无法安装32位操作系统。

PostgreSQL从两个主要方面获得64位版本的好处。 首先,可以将更适合64位(更大的整数和时间戳types)的数据types直接在寄存器中传递,而不是使用指针。 其次,可以为数据库的专用缓冲区caching分配更多的内存。 该可调参数(shared_buffers)的收益递减点通常在8GB左右,但在32位系统上将被限制为<2GB。

但是,如果您在Windows上,PostgreSQL不像在UNIX-ish平台上那样有效地处理共享内存。 对于数据库,无论您是32位还是64位构build的PostgreSQL,通常都会减less<512MB的专用内存。 你会做得更好,剩下的操作系统caching,而不是专门用于数据库。 因此,Windows上的PostgreSQL在32位和64位之间的性能增益并没有那么大。 通常从可用内存更多而获益的主要可调参数实际上并没有很好地利用它。

我在64位体系结构上运行MySQL,因为我希望它们能够最有效地利用每个线程超过4GB的内存。 一般来说,这应该适用于所有的数据库。

架构之间的主要区别之一是增加的寻址允许更大的内存处理。 虽然英特尔的物理地址扩展允许寻址超过4GB,但每个线程仍然限制为4GB。 PAE最高可达64GB。

维基百科比较了64位和32位,其中包括更多的低级细节。

请注意,如果您只有64位MySQL客户端库,那么在尝试将它们与32位代码链接在一起时将会出现“错误的体系结构”错误。 当我尝试安装python绑定(“pip install MySQL-python”)时,发生了这种情况。

一个人可以使用64位MySQL服务器和一个32位MySQL客户端,很遗憾MySQL社区服务器不包括32位和64位客户端库版本。 正确的解决scheme是安装额外的32位MySQL客户端库。 但是,由于安装MySQL最简单的方法似乎是MySQL社区服务器二进制下载 ,并且假设64位安装程序仅附带64位客户端库,阻力最小的path是只下载32位安装程序。

(所有这些,假设你将总是使用非常小的数据集)

对于这么多的事情来说,32位是一个胜利(只要你可以和地址空间一起生活),但是数据库是一种即使是小型数据库也能够以64位运行的真正的提升。 诚然,我不知道关于MS SQL服务器的事情,但我已经看到了基准testing(例如,在Sun 5(较旧的64位Sun桌面)上,32位通常要快一点,除了mysql,这是30在64位速度更快。