我正在Win 2k8上使用以下硬件设置SQL Server:
我读过一些build议,把日志文件和操作系统放在自己的RAID1上,而其余的数据在RAID10上是8个磁盘的最佳configuration。 但是我缺less2个磁盘,想知道哪个configuration会一样好。
选项1) 2个用于操作系统和日志的RAID1,4个用于数据的RAID10
选项2) 6个用于操作系统,日志和数据的RAID10
PS在RAID10中分区磁盘有什么区别?
这里的一般要点是,在两个集合同时被访问时,在不同的物理磁盘(或RAID卷)上具有两组文件使事情变得更快。 这就是为什么操作系统通常会得到自己的音量(它自己做了很多的I / O操作,而且在处理数据时也不希望它减慢),这也是为什么你通常要分割数据基于他们的使用模式。
也就是说,对于SQL Server来说更重要的一点是,事务日志不仅通常与数据文件同时访问,因此将两者分开是一个好的select,而且如果您需要,至less还需要其中的一个希望在硬件故障的情况下能够真正恢复的东西。 如果你失去了事务日志,你可以创build另一个集合,但是你的实际数据是安全的。如果你丢失了数据,事务日志将让你从最后一次备份恢复到失败的时刻。 如果您同时丢失了数据和日志,则只能恢复上次的备份。
在您的scheme中,最好的select是创build三个RAID 1卷,一个用于操作系统,一个用于数据库文件,另一个用于事务日志。 我知道这看起来像是一个很大的空间浪费(操作系统无处使用500 GB,所以事务日志,如果你遵循一个适当的备份计划),但它会帮助很多,当涉及到性能和可恢复性。 而且,如果您不需要超过500 GB的实际数据,它将对您有很大的帮助。
如果您不能这样做,则使用操作系统和日志的RAID 1卷和数据的一个RAID 10卷。 这是你可以用硬件做的最好的。 但是,无论你做什么,你都不应该把数据和日志放在同一个地方。
关于多个分区:这是完全无用的,甚至可能使事情恶化。 同一个磁盘(或RAID)中的三个分区与单个分区(=严重)执行完全相同,或者由于磁盘几何问题而更差; 这对恢复没有帮助,因为在硬件故障的情况下,无论如何你都会失去所有这些。
噢,为了您自己的利益,甚至不用考虑使用RAID 5,如果您关心写入性能。
如果您不能为Raid 1 Log磁盘添加2个额外的磁盘,我将亲自使用选项1。
RAID 10的分区为您提供了镜像和分条以提高速度和冗余度。
这个问题也被问及在StackOverflow回答。 也许它会有你正在寻找的答案。
你说得对,在这种情况下8个磁盘会更好,但最重要的是你要把日志放在与数据不同的磁盘上。 如果你真的只有6个,而且你需要4个磁盘的数据空间,那么我会试图把日志放在OS R1对的第二个分区上。 这是不理想的,因为在logging和操作系统工作的时候,磁头将不得不移动很多,但是如果你有足够的内存,那么操作系统的工作应该是非常低的。 如果你不需要太多的磁盘空间,那么2 + 2 + 2设置怎么样?
就我个人而言,我认为您应该将操作系统操作与数据库操作的日志操作分开,因为每个操作都有自己独特的非互补磁盘I \ O模式。 数据库和日志不应该保留在相同的arrays中,除非是非常小的实现。 RAID10对于数据库来说有点矫枉过正,除非你的数据库\应用程序的磁盘I / O密集程度很高,恕我直言。 我可能会build议:
RAID1 = OS RAID1 =loggingRAID1 =数据库
在我的大多数常见设置中,我倾向于使用操作系统的RAID1; 一个临时的,非必要的东西的RAID0; 和各种RAID数据。
如果客户端需要最大磁盘空间,那最后一组将是1 x RAID5; 如果他们更关心性能,后者将是1×RAID10; 如果他们更关心冗余,我会去2 x RAID1。
通常我有第二个控制器的数据量; 有时会根据数据库的使用情况改变读写优先级(我们倾向于使用操作系统,控制器1上的温度和日志,读取率为25%:写入量为75%,控制器2上的数据量为75%阅读:写25% – 这是我们出售的应用程序的性质)
在你的情况下,假设PERC可以做到这一点(我倾向于惠普智能arrays),我可能会采取以下措施:
这应该给你(约):
然而在我看来,你的性能问题很可能是在SATA磁盘上。 我从来没有设法使它们在任何地方靠得足够稳定,所以我总是select至less10K SAS驱动器。 也许自从我上次使用它们以来,它们已经好多了,所以你的里程可能会有所不同。