数据库系统搭建硬件平台选购指南


你在为大型系统设计数据库系统时,能够买到有许多硬盘和充足内存的大型数据库服务器。以下是你在设计系统时应当遵守的一些基本原则。

随着服务器硬件的功能变得越来越强大,而价格一路急剧下跌,许多公司(尤其是小公司)发现如今购买数据库服务器面临众多选择。这意味着,经验相对欠缺的数据库管理员们也被要求设计功能越来越强大的系统。你在为大型系统设计数据库系统时,能够买到有许多硬盘和充足内存的大型数据库服务器。以下是你在设计系统时应当遵守的一些基本原则。

·存储系统

人们在设计磁盘阵列时最常犯下的错误就是,只计算所需的闲置容量。闲置容量只是设计存储子系统时要考虑的一部分而已;另一个部分就是存储系统需要支持的输入/输出操作次数。

应当遵守的一条基本原则就是,写操作频繁的数据库最好使用RAID10阵列,而读操作频繁的数据库通常最好使用RAID5阵列。原因在于,如果把数据写到RAID5阵列,性能会受到影响。由于把数据写到RAID5阵列上,存储系统必须在写数据之前计算出奇偶检验位,而算出奇偶检验位需要相当长的时间,这意味着写到RAID5阵列上的性能会降低。

由于这种性能影响,我们总是建议你应当把事务日志放到RAID10阵列上。事务日志是写操作始终很频繁的文件,不管数据库是以读操作为主的数据库,还是以写操作为主的数据库。tempdb数据库也应当放在RAID10阵列上,具体来说放在与事务日志文件所在阵列不同的另一个RAID10阵列上。

对每个磁盘阵列进行分区时,应当确保分区正确对齐。默认情况下,Windows2003及以下版本没有正确对齐分区,这会导致磁盘子系统的性能达不到最理想水平。可以通过使用diskpart.exe实用程序(Windows2000中的diskpar.exe)创建分区来解决这个问题。这样创建的每个分区其对齐偏移量应为64kb;在默认情况下,创建的每个分区其对齐偏移量为32kb。Windows2008在默认情况下创建的分区其对齐偏移量为128kb。

·物理数据库构建

微软最近开始推荐使用的一项比较新的技术就是,针对两个至四个CPU核心当中的每个核心,数据库应当有一个物理数据库文件。应当为数据库里面的每个文件组做到这一点。

如果你的服务器有两个四核CPU,那么共有八个核心。我们假定数据库有两个文件组,一个名为Data,另一个名为Indexes。那么每个文件组都应当有两个至四个物理文件。这项技术让SQLServer可以对磁盘输入/输出进行优化。可能的话,你应当尽量分散文件,以便位于每个存储阵列上的文件尽可能少。

tempdb数据库的配置应有点不同。配置tempdb数据库时,建议针对每个CPU核心,数据库应当有一个物理文件。这样系统就可以为tempdb数据库尽量加快输入/输出操作。与用户数据库一样,放在每个磁盘阵列上的文件也应当尽可能少。

你在数据库里面应当始终至少有两个文件组。第一个文件组包括表,第二个组包括索引。你需要让它们位于不同的文件组,那样查询索引时,装入到表的操作不会受到影响,反之亦然。

·系统内存

在过去,购买只安装了数GB内存的数据库服务器相当常见。那是因为内存的价格还很昂贵。

如今,内存价格相当便宜;只要你能承受得了,应当购买尽量多的内存。内存越多,数据库的运行速度几乎总是越快。例外情况就是,如果你安装的内存超过了数据库的大小。举例来说,如果你有3GB大小的数据库,但安装了8GB内存,那么为服务器添加更多内存对提升数据库的性能没有帮助,因为SQLServer可能已经能把整个数据库装入到内存中。

在决定为SQLServer分配多大内存时,绝对不要让SQLServer把所有内存都分配给它。因为Windows操作系统需要内存来运行,安装在数据库服务器上的其他任何软件同样需要内存来运行,比如备份软件和反病毒软件等。建议留出一两GB内存用于操作系统及所用的其他软件。这个内存量的大小取决于安装了哪些软件。

因为没有两个数据库服务器是一样的,所以没有明确的原则规定你的硬件解决方案应当是什么样子。你有众多选择;要设计一款将来可以使用多年的可靠的解决方案,关键在于明白自己的数据库需求,明白自己使用的硬件,明白这些需求在哪些环节得到了满足,以便既没有购买对现在而言配置过低的硬件,也没有购买对下一年而言配置过高的硬件。

相关内容