SQL Server 2008R2的最佳驱动器配置


19

我有一台运行SQL Server 2008 R2的非常繁忙的数据库服务器,该服务器具有以下设置:

  • SATA RAID 1(2个驱动器)-操作系统/程序
  • SAS RAID 10(4个驱动器)-SQL数据库文件(数据和日志)
  • SAS RAID 1(2个驱动器)-TempDB(数据和日志)

假设我无法在该服务器中添加其他驱动器,是否充分利用了可用的配置?还是我应该在这里考虑另一种方案,例如将日志与数据文件隔离开?

更新:

对于需要更多硬件详细信息的用户:

  • SATA驱动器(用于OS / Program分区)是:WD 7200 RPM 3 Gb / s 3.5英寸SATA
  • 其他阵列中使用的SAS驱动器是:Seagate 15K RPM 6 Gb / s 3.5英寸SAS
  • 使用的RAID控制器是:LSI 9260-8i SAS / SATA 6 Gb 8端口

更新2:

基于我收到的反馈,它看起来像我有以下几个可行的方案可供选择-我将颁发奖金的人可以告诉我这是很可能是在环境最好的,我已经概述:

  1. 保留一切-我可能不会做得更好
  2. 将我的2个SAS RAID 1驱动器移到现有的RAID 10阵列中,使其总共由6个磁盘组成
  3. 将我的日志文件移动到SAS RAID 1上和/或将TempDB(数据或日志)重新定位到RAID 10

您的第二次更新提出的问题与原始问题完全相同,因此适用原始答案。“ ...在我所概述的环境中可能是最好的” ......您没有给我们看过工作量的任何分析,只是说它“相当忙”,所以同样的答案也适用。
Mark Storey-Smith

有了市场上的高性能NVMe和其他SSD磁盘,从SQL Server磁盘配置最佳实践的角度来看,RAID不再非常重要。磁盘池(存储空间)是前进的方法。但是,您需要在逻辑上分离卷,以便更好地解决与磁盘相关的性能问题。
IT面孔

Answers:


14

这个问题的变式半定期出现:

偶尔也有关于数据/日志分离“最佳实践”的斗争。

如果不对此服务器的工作进行更详细的分析,则同样的建议也适用于先前给出的建议。

  • 适用于操作系统的RAID 1
  • RAID 10(6磁盘)用于数据/日志/ tempdb

分割很少,只有很少的心轴可用。与2个较小的阵列相比,具有较大IOP容量的单个阵列通常可以更好地吸收工作负载的麻烦。

值得测试的一种变体是将tempdb放入操作系统驱动器。只有在您具有可以重复播放的代表性工作负载时,才可以这样做,以确保公平地比较配置。如果您在生产中采用这种安排,请确保tempdb的增长受到限制,以免您无意间浪费了OS驱动器上的所有可用空间。

鉴于您的操作系统驱动器是7200RPM杯垫,如果操作系统驱动器配置上的tempdb带来任何好处,我会感到惊讶。


7

这完全取决于您的工作量,但是只有6个驱动器确实限制了您的选择。如果您的工作负载在很大程度上不依赖于tempdb,例如排序,哈希表和快照隔离,那么最好在RAID 10中一起使用6个SAS驱动器。但是,如果您知道或有度量标准来证明tempdb被大量利用,那么您应该将其分开。


感谢您的回答,(不幸的)更改范围的配置不是一个选择,因为此服务器正在生产中。我对将tempdb切换回RAID 10并将所有日志文件都放在RAID 1上感到好奇-这是一个明智的选择吗?
DanP

2
请记住,SQL Server作为提交的一部分需要物理上将所有事务写入日志,因此您希望在配置中获得最快的写入性能。RAID 10比RAID 1提供更好的写入性能,因此我将日志保留在更快的卷上。
帕特里克·凯斯勒

2

这在很大程度上取决于您所说的“非常忙”的含义:不同的工作负载模式(是否写入繁重的代码,是否进行批量操作,并发访问的级别,仅是其中的许多变量中的三个)可能会对工作负载产生巨大影响。任何给定主轴布置的性能。

对于写繁重的情况,将日志与数据分开可能会产生重大影响,因为每次写都涉及更新日志和数据文件,因此如果两组文件都在同一组主轴上,则涉及大量额外的磁头翻转。

在没有进一步参考您的工作负载(以及这些驱动器以及它们与计算机之间的任何控制器的规格)的情况下,我倾向于选择三卷:一份用于OS +程序和tempdb(数据),一份用于主数据库。数据,第三个用于日志(tempdb和主DB)。

当然,如果您的工作负荷都很少用于写操作,那么您不应该花费太多时间来担心将数据和日志分开,因为这几乎不会造成性能差异,而为它们专门分配一个整体将浪费大量可用资源。空间。


我肯定会将我们的环境描述为“大量写入”的环境-我将在星期一用更详细的硬件规格更新我的问题。
DanP

关于OP具有的驱动器数量有任何想法吗?我正在考虑他为日志文件准备的Raid 1。听起来这不是写的好选择,而且AFAIK日志文件不受读取的限制,而是写的
Marian

我添加了有关机器硬件的其他规格。
DanP

1
这种误解可能是许多数据/日志分离问题的根源,因此深表歉意,但我要指出这一点。“ ...每次写入都涉及更新日志和数据文件”-不,不是。写入数据页发生在检查点,而不是每次修改时。
Mark Storey-Smith

1
@DavidSpillett没错,在某些情况下,拆分总是有益的。关键是您测试并验证了该配置对于该特定工作负载是有益的。
Mark Storey-Smith

2

实际答案取决于您的需求,但通常“将数据和日志放入不同的阵列”比“将tempdb放入其自己的阵列”具有更高的重要性。

给定您可用的驱动器数量,我的出发点将是:

  1. 两个驱动器,RAID 1-操作系统,可执行文件,页面文件。
  2. 四个驱动器,RAID 5-所有数据文件(或者,RAID 1 + 0)
  3. 两个驱动器,RAID 1-所有日志文件

应该做的是使用SQLIO测试不同驱动器配置的性能。


这绝对代表了我所阅读建议的“另一面”。我希望有一种确定的方法来确定哪种选择更好,而无需在生产环境中“尝试”。
DanP

2
@DanP好吧,我个人本来会接受Mark的建议,并选择了带有其他驱动器(操作系统除外)的RAID10。据我所知,日志文件是写密集型的,并且需要比RAID 1更好的性能。但是我不是硬件专家。只是我的2美分。
玛丽安

2
我应该提到,我的观点仅来自过去(某种程度上)向更好的服务器迁移失败的经验,但是性能却较差。我们从未在这台新服务器上测试过实际负载,也从未有机会,服务器未按时准备就绪。事实证明,在迁移到生产之前,必须进行服务器测试。很抱歉。因此,对于所有迁移/升级,我的口头禅是:TEST,TEST,TEST...。
玛丽安

1
不确定是从RAID 5还是从SQLIOSIM开始...让我们一起讨论后者,因为前者是不言而喻的。SQLIOSIM是正确性和压力测试工具,它不是性能或负载测试工具。在比较config-X和config-Y的工作负载Z的性能时,它绝对没有位置。所有这些将告诉您,在SQLIOSIM运行中config-X对config-Y的性能如何。如果要比较工作负载-Z的性能,请测试工作负载-Z。
Mark Storey-Smith

1
@GreenstoneWalker“废话,RAID1的写入速度快于RAID1 + 0”。这个想法从何而来?
Mark Storey-Smith

-1

根据您使用数据库的目的(OLTP与仓库),您的配置看起来像是一个不错的常规配置。如果您有更多磁盘,则将有更多选择。

如果将TempDB的磁盘切换到RAID 0(条带化),可能会获得更好的性能。它增加了失败的风险,但是由于TempDB仅缓冲数据,因此不会遭受数据丢失。因此,大多数人认为这是一个合理的权衡。只需保留一个备用(或热备用)。

您没有提到的一件事,但是可以尝试(如果尚未尝试):Microsoft建议将TempDB拆分成几个文件(每个CPU一个)。当然,最好将它们放在单独的磁盘上,但是简单地使用单独的文件会有所帮助。 http://msdn.microsoft.com/zh-CN/library/ms175527(v=SQL.105).aspx


4
Tempdb用于许多用途,但请勿将其视为一次性数据库并将其放置在RAID 0上。请记住,如果RAID 0卷失败,则SQL Server将无法启动。
Patrick Keisler 2013年

我确实确实如建议的那样为每个内核创建了一个临时db,但也感谢您提出这一点:)
DanP 2013年

1
这些建议不是很好,并不适合所有环境。@PatrickKeisler前面提到了第一个。第二个是Paul Randal不久前揭穿的神话。这篇文章是这样的:每天一个SQL Server DBA神话:(12/30)tempdb每个处理器核心始终应该有一个数据文件。因此,MS文档可能是错误的,请切勿专心。
玛丽安

2
“因为TempDB仅缓冲数据,所以您不会遇到数据丢失的情况……”,我相信系统的用户会很感激,他们在X个小时的停机时间内会遭受痛苦,而a)ops在地下室四处寻找替换磁盘或b)DBA试图向服务台说明如何从他的手机中移动tempdb。
Mark Storey-Smith
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.