2008-10-03 107 views
15

我们的网站有一个SQL 2005数据库后端,目前大小约为10GB。虽然我没有确切的统计数据,但读取数量比写入多得多。SQL服务器的最佳RAID设置

我们正在升级数据库服务器和我的想法得到4个磁盘,并在两个RAID 1阵列设置起来的 - 一个用于数据文件和其他的操作系统和日志文件。这是最佳设置,还是RAID 5对数据文件更好? RAID 10的价格有点昂贵,可能对我们来说是过时的。

在这个阶段,SQL Server应保持多数据库的RAM(8GB),但它会成长,所以我不想完全依赖这一点。

编辑:我们绝对需要在生产服务器上进行冗余,所以RAID 0本身就没有了。 RAID 10很不错,但对我们来说可能有点贵。

回答

16

您使用独立RAID 1镜像的概念是正确的策略。

我们在我的工作中实施了类似的场景,他们工作得很好。

RAID 1

RAID 1为您提供了1个磁盘写入,但2个磁盘读取的速度。

当您将数据写入到RAID 1阵列,它必须将数据写到两个磁盘,这样你就不会获得任何性能提高,但是这是你得到你的数据安全。

当从RAID 1个阵列,因为它们具有在其上的相同的数据时,控制器将从两个磁盘读取读数。

RAID 5

这是用于保护大量数据是有用的。对于相同数量的数据,RAID 5的成本比RAID 1的成本(或超过单个磁盘的容量后的RAID 0 + 1)增加得慢很多。

如果您想用RAID 5保护600GB,您可以使用4x200gb驱动器或3x300gb驱动器实现此目标,需要800-900gb的总购买驱动器空间。 RAID 1将是需要1200GB购买空间(600GB驱动器相当昂贵)或RAID 0 + 1的2x600GB驱动器,允许使用价格较低的容量驱动器(即:4×300GB或6×200GB),但仍需要总计1200GB购买空间。

RAID 0 + 1

信息类似的优点RAID 1服用另一个切口与整个磁盘条带化。我假设如果你担心更高的同步读取,你也将使用多处理器/多核。您将一次处理多个查询,因此分条不会有太大的帮助。对于使用大型数据文件(如视频编辑)的单个应用程序,您将看到RAID 0 + 1具有更好的优势。

前段时间我在为一位顾客研究同样的问题时,发现这篇文章非常有趣http://blogs.zdnet.com/Ou/?p=484。在第二页中,他讨论了从RAID 0 + 1到独立RAID 1阵列的变化,从而提高了性能。这是一个更大的规模(20个磁盘和16个磁盘SAN),但概念相同。 SQL Server能够在多个卷之间对数据进行负载平衡,而不是仅使用RAID 0 + 1的基本不知情的条带化,这是一个很好的概念。

+1

感谢您的详细解答和博客文章链接。这正是我所寻找的信息。 – EMP 2008-10-03 05:20:08

+1

另请参阅http://blogs.msdn.com/b/teamcenteronsql/archive/2010/04/27/raid-1-0-and-sql-server.aspx,了解如何使用RAID1(带有“SQL Striping”)进行推理1 + 0。 – 2011-01-26 19:49:56

1

鉴于读取次数多于写入次数,RAID 5的数据文件速度会更快。

如果可能,可以为事务日志文件使用单独的RAID 1 + 0阵列。

编辑:您将需要至少3个磁盘来创建RAID 5阵列。

+0

但是你会从5个磁盘获得更好的收益,更不用说更好的阅读时间了。获得高质量的硬件RAID5控制器和一个大大的缓存,你永远不会注意到RAID5比单个磁盘写入速度慢,而读取你不能击败5个主轴。 RAID10日志我同意。 – 2008-10-03 04:46:59

1

请注意,关键性能指标将是搜索速率,而不是数据速率。也就是说,磁盘绑定的典型数据库(可能随着它的增长而变化)将受限于每秒磁盘可支持多少个IO,而不是它们可支持顺序读取的最大数据速率。

这意味着,如果你想知道如何使用4个磁盘(例如),两个RAID1对应该给你更好的性能比一个4个磁盘阵列RAID5。当然,您不会从两个RAID1对中获得尽可能多的可用存储空间。如果您使用的是硬件控制器与电池供电缓存RAM,像样的数目

0

RAID 5是不错的。选择块大小并配置数据库,以便条带大小(数据磁盘*块大小)等于数据库写入大小。确保你的数据分区[对齐/是条带大小的倍数]。

否则,对于数据库服务器来说,RAID 1 + 0总是不错的选择。

1

考虑到数据库的小尺寸,我会使用4个15krpm 2.5英寸SFF SAS磁盘作为两个独立的RAID 1镜像,我可以通过Adaptec 5805 PCI-e x 8 SAS控制器来运行它们。将数据放在一个阵列上,把日志放在另一个阵列上,以确保安全。条形存储器映射整个数据库,一个非常大/昂贵的SAN或使用SSD,我相信这只是最快速的设置。

希望这有助于

3

我会花一点时间,确保你的数据库是有效的索引;监视它的全表扫描,确保最频繁的查询读尽可能少的数据成为可能;我会采取有效设计的DA在SSD上的索引不正确的情况下,通过数据库设置缓慢磁盘上的tabase。

0

我还建议建立一套基准值,它可以让你做更多的建立预测,而不仅仅是把手指放在空中(或者问StackOverflow,看起来模糊而奇怪地类似于这两个概念)。

某基线值,还可以测量更改的有效性,并为以后升级了良好的基础......

(如果不知道,拿起性能工程一些文献(或维基百科)。这是处理这类问题的一整套分支)。

1

两件事情,

理论是RAID 1为您提供了一个读两个驱动器,但不”认为等于两倍的性能。事实上,事实并非如此,通常顺序读取的结果与一个驱动器完全相同。令人惊讶,但真实......做真实世界的测试,不要依靠理论。

就这样说,我会用两个RAID 1 ......但不像你说的那样,一个用于操作系统,另一个用于数据。我会在其中的一个小操作系统分区,但肯定会给数据的sql服务器袭击。为sql server提供所有可能的集合。

SQL Server可以跨越对进行条带化,但绝对不希望与0 + 1一起使用,尽管这里有人说过。他们再次考虑理论基准,不了解sql server可以将所有数据分散到磁盘上,并且可以通过优化的方式实现。

Raid 1只是用于数据冗余...除此之外,尽可能多地给sql server,让它做它的事情......它非常擅长它。

你有一个0 + 1,并将其分成两个RAID 1 ....做真正的世界测试,你会惊讶于SQL Server的工作更快。

0

顺便说一句,我在哪里工作,他们有一个高端的圣,在大约2分钟内做了一次桌子扫描。我把驱动器分成了简单的RAID 1集,并让SQL服务器处理条带......不是SAN。 2分钟降至45秒。

网上还有其他文章关于这个......它很难让突袭的“真正的信徒”接受这个,这就是为什么我强调这一点。

0

我更喜欢我已经在我的戴尔r210-II linux服务器上配置的RAID 10。令人惊叹的性能...