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


16

(我已经读了很多关于64位和32位OS / App的文章,但是这个问题是专门针对数据库的。)

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

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

我已经读到9.0之前的PostgreSQL版本仅适用于Windows 32位版本,这篇有关在64位Windows上运行32位PostgreSQL的文章消除了我的一些困惑,但是我正在寻找更多信息。

什么时候可以从使用64位数据库中受益(例如,数据库大小/磁盘空间,可用的系统内存,可以从中受益的数据序列类型,使用的是哪个数据库引擎等)?

Answers:


20

在什么条件下使用64位安装才有意义。

除了被白痴。抱歉-在64位服务器上安装32位数据库有什么好处?并且-想象-服务器2008R2仅提供64位。

如今,没有机会安装32位SQL Server版本。

数据库是特定于此的-因为它们在必要时想使用大量内存作为缓存。一个32位的进程可以为它们提供比2GB / 3GB少得多的功能。PAE不一样。即使忽略限制,PAE内存也不等于SQL Server的实际内存(它仅用于一件事-缓存数据库页)。

32位操作系统-处于同一级别。在现代硬件上安装32位操作系统完全没有意义。


4
+1阿门兄弟!!
DaniSQL 2010年

6
就32位OS和Apps而言,还有一些次要的优点,例如较小的内存占用量。
JohnB

@TomTom:SQL Server 2008 R2可用32位(略微向下滚动)msdn.microsoft.com/zh-cn/library/ms143506.aspx
JohnB 2010年

1
是的,占地面积较小。特别是对于无关紧要的数据库,请特别注意。数据库不是单词。在大多数安装下,它处理的是很多数据,因此访问RAM的很多是有意义的。
TomTom'7

1
...一个过程中有很多ram超过4GB?您知道有多少SQL服务器没有为整个多进程服务器提供该服务吗?我并不是说拥有64位操作系统和SQL Server是一个坏主意,但我会说有很多配置根本不重要。
埃文·卡罗尔

6

PostgreSQL通过两种主要方式获得64位构建而受益。首先,可以将适合64位的数据类型(主要是较大的整数和时间戳类型)更有效地直接传递到寄存器中,而不是使用指针。其次,可以为数据库的专用缓冲区高速缓存分配更多的内存。该可调参数(shared_buffers)的收益递减点通常为8GB左右,但在32位系统上它将限制为<2GB。

但是,如果您使用Windows,则PostgreSQL处理共享内存的效率不如UNIX平台。无论您使用的是32位还是64位PostgreSQL版本,收益递减点通常最终是<= 512 MB的数据库专用内存。您最好将其余部分留给操作系统缓存,而不是将其专用于数据库。因此,在Windows上使用PostgreSQL,实际上并没有从32位提高到64位的性能提升;通常会因拥有更多可用RAM而受益的主要可调参数实际上并未很好地利用它。


1
请注意,有些人报告说可以通过为work_mem设置非常大的值来从64位Windows PostgreSQL中受益,这可以使服务器对内存中的大量数据进行排序。
格雷格·史密斯

4

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

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

Wikipedia 将64位与32位进行了比较,其中包括更多低级详细信息。


2
它是每个进程的,而不是每个线程的。线程共享相同的内存空间。
埃文·卡罗尔

3

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

可以将64位MySQL服务器与32位MySQL客户端一起使用,并且MySQL社区服务器不同时包含32位和64位客户端库版本,这是一个遗憾。在正确的解决办法是安装额外的32位MySQL客户端库。但是,由于安装MySQL的最简单方法似乎是MySQL Community Server二进制下载,并且考虑到64位安装程序仅附带64位客户端库,因此阻力最小的方法是仅下载32位安装程序。 。

(所有这些,假设您将始终使用非常小的数据集)


2

对于很多事情来说,32位是一个胜利(只要您可以使用地址空间),但是DB是一件事,即使是小型数据库也可以真正以64位运行。当然,我对MS SQL服务器一无所知,但是我已经看到了基准测试(例如,在Sun 5(旧的64位Sun桌面)上,32位通常要快一些,除了mysql才30 %在64位上更快。


2
“对于很多事情,32位是一个胜利”-示例?
克里斯·S

1
我可以想象的唯一情况是,如果未使用适当的优化来编译代码,那么32位数据库将比64位更快。就商业软件而言,数据库可能是最能充分利用64位提供的功能的东西。
约翰·加迪尼尔

1
好吧,在RISC 32> 64过渡时代,大量的基准测试,至少早期的x86对64位没有什么好处,除非需要地址空间,而db则没有。我也不想相信,今天我为x86打赌,64位总是更快(只是因为您逃脱了i32指令集)。Anandtech.com具有基准,直到您的眼球流血为止。记住:向我显示数据。
罗纳德·帕托

1
在所有其他条件相同的情况下,我可以想到的64位主要缺点是具有更大的指针(64位),与同等的32位动态数据结构(例如,链表,树)相比,它将占用更多的缓存空间。 ...)。这减少了可用的缓存内存量。此症状也存在于主存储器中。我的只有64Mb RAM的64位Debian服务器比类似设置的32位服务器使用更多的交换空间并运行更少的应用程序。
sybreon

3
@sybreon:如果您需要的话,我认为我有一块128mb的旧木板!
JohnB
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.