我们有一个用于网站的SQL 2005数据库后端,当前大小约为10GB。尽管我没有确切的统计数据,但读取的次数多于写入的次数。
我们正在升级数据库服务器,当时我正在考虑获得4个磁盘并将它们设置为两个RAID 1阵列-一个用于数据文件,另一个用于操作系统和日志文件。这是最佳设置还是RAID 5对于数据文件更好? RAID 10有点贵,可能对我们来说太过分了。
在此阶段,SQL Server应该将大部分数据库保留在RAM(8GB)中,但是它会增长,因此我不想完全依靠它。
编辑:我们绝对想在生产服务器上实现冗余,因此RAID 0本身就没有了。 RAID 10很不错,但对我们来说可能有点贵。
最佳答案
您使用独立RAID 1镜像的概念是正确的策略。
在我的工作中,我们已经实现了类似的方案,并且效果很好。
RAID 1
RAID 1为您提供了1个磁盘写入速度和2个磁盘读取速度。
当您将数据写入RAID 1阵列时,它必须将该数据写入两个磁盘,因此您不会获得任何性能提升,但是这是您获得数据安全性的地方。
从RAID 1阵列读取数据时, Controller 将同时从两个磁盘读取数据,因为它们的数据相同。
RAID 5
这对于保护大量数据很有用。对于相同数量的数据,RAID 5的成本增加得比RAID 1(或RAID 0 + 1,一旦您完成的容量超出单个磁盘的大小)要慢得多。
如果要使用RAID 5保护600gb,则可以使用4x200gb驱动器或3x300gb驱动器来实现,这需要800-900gb的总购买驱动器空间。 RAID 1将是2x600gb驱动器,需要购买1200gb的购买空间(600gb驱动器要贵得多),或者RAID 0 + 1允许您使用价格更便宜的容量驱动器(即:4x300gb或6x200gb),但总共需要1200gb购买的空间。
RAID 0 + 1
与RAID 1具有类似的优势,跨磁盘 strip 化又提高了一个级别。我假设如果您担心更高的同时读取次数,那么您还将使用多处理器/多核。您将一次处理多个查询,因此分条并不会提供太多帮助。对于使用大型数据文件的单个应用程序(例如视频编辑),您将在RAID 0 + 1上看到更好的优势。
前一段时间,当我为客户研究同一问题时,我发现本文非常有趣http://blogs.zdnet.com/Ou/?p=484。在第二页中,他讨论了从RAID 0 + 1到独立RAID 1阵列的变化,从而带来了许多性能改进。这是更大的规模(20磁盘和16磁盘SAN),但概念相同。 SQL Server能够平衡多个卷之间的数据负载,而不仅仅是使用RAID 0 + 1的基本无提示 strip 化功能,这是一个很棒的概念。