建议的SQL Server磁盘/分区设置


14

我正在寻找有关为SQL Server设置磁盘/分区的最佳方法的建议。这是我的一些主要担忧:

应该如何分隔SQL文件(数据文件,日志,临时文件)?

RAID大量的HDD并分区空间还是为每个RAID制作更少磁盘的多个RAID更好?

数据和日志文件应该使用不同的RAID类型吗?

默认数据库(master,msdb等)应该位于C:上还是应该与其他数据/日志文件位于同一位置?

Answers:


14

这是一篇不错的博客文章:http : //sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

关于磁盘对齐的白皮书:http : //msdn.microsoft.com/zh-cn/library/dd758814.aspx

简而言之,您的操作系统应位于RAID 1上,数据文件应位于RAID 10上(最好),日志文件应位于RAID 1上。

SQL性能文章:http : //www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

关于十大最佳性能提示的PDF:http : //www.stlssug.org/docs/Best_Practices_for_Performance.pdf

另外,出于性能原因,请记住将TEMPDB放在单独的磁盘上。我确定Paul Randal会来这里,并引起您的注意。

MS表示为什么要使用tempdb:http//msdn.microsoft.com/en-us/library/ms175527.aspx


@SQLChicken:如果对驱动器类型有偏好-> SATA vs SAS,是否有建议?SATA上的SAS?(与RAID类型无关)。
Pure.Krome

1
如果有钱的话,SAS驱动器由于速度和可靠性而比SATA更受青睐。
SQLChicken

11

这是一个很大的“取决于”问题。

由于我不是存储专家,因此我无法为您解答如何创建单个RAID阵列的问题,但是我可以为您提供其他帮助。

您需要考虑的第一件事是各种数据库的工作量-OLTP(读/写)或DSS / DW(大部分读)。对于读/写工作负载,您应该查看RAID 1或RAID 10(RAID 1 + 0),因为它们提供了冗余和出色的读/写性能。对于大多数工作负载,您可以使用RAID5。不应将RAID 5用于读/写工作负载的原因是,您要为写入性能付出一定的性能损失。

就其本质而言,事务日志是可读写的(或主要是写操作,具体取决于您是否使用事务日志进行任何操作,例如日志备份或复制),因此永远不要将其放在RAID 5上。

这意味着对于某些数据库和工作负载,RAID 5上可能有数据文件,RAID 1/10上有日志文件,而对于其他数据库,RAID 1/10上可能有所有文件。更进一步,如果您具有分区数据库,则该数据库可能包含一些读最多的数据和一些读/写数据,甚至可能在同一表中。可以将其拆分为单独的文件组,然后将每个文件组放入适当的RAID级别。

实际数据库的分离又取决于工作量以及底层IO子系统的功能-例如,将事物存储在单个RAID阵列上而不是SAN上,可能需要更高程度的分离。

Tempdb本身就是一个特例,因为它通常是一个负载很重的数据库,应该与其他数据库分开存储。系统数据库不应大量使用,并且可以放置在任何地方,只要有冗余即可。

这是我帮助编写的白皮书的链接,该白皮书应该对您有所帮助:物理数据库存储设计。还要确保您的IO子系统可以处理预期的工作负载-请参阅此白皮书:部署前I / O最佳实践。最后,请确保使用正确的RAID条带大小(在较新的系统上通常为64K或更高),正确的NTFS分配单元大小(通常为64K)以及在Windows Server 2008之前的系统上,正确设置磁盘分区偏移量。有关这些信息以及指向它们的更多信息的指针以及为什么应采用这种方式进行配置,请参阅此博客文章:磁盘分区偏移量,RAID条带大小和NTFS分配单位是否设置正确?

Bototm产品线:了解您的工作量和IO子系统功能,然后相应地实施。

希望对您有帮助。

PS就tempdb而言,它在如何配置它方面有很多蠕虫,并且存在各种冲突的信息。我在TF 1118周围的误解中写了一篇有关tempdb数据文件配置的综合博客文章。


伟大的帖子保罗:)
Pure.Krome

1

我设置的服务器的简短答案一直是

登录到RAID 1或10的单独物理磁盘上(条带化+镜像)

数据库位于自己的磁盘上,通常取决于性能需求RAID5

RAID控制器上的大量缓存

最好将OS和Windows Pagefile再次放在单独的阵列上,通常只是一个镜像(RAID 1)。这使所有写入操作保持分离,因此出色的性能不会拖累一切。

我过去所经历的是,拥有数据库写入+日志写入+页面文件写入将使Raid5阵列陷入困境,而性能将大大降低。问题是您的性能在测试,开发等方面会很好。但是,当您投入生产和使用时,这个问题将“出乎意料地”出现,并且用户的投诉会激增。


1

这里有比我更好的MSSQL专家,但总的来说,我建议以下几点:

C上的OS和代码:-这应该是本地磁盘,应该是RAID1阵列对-为此,我们使用2 x 2.5英寸SAS 146GB 10krpm磁盘,但是您可以使用2 x SATA 7.2磁盘。数据应以非常快的速度(10krpm或更高)在RAID 1 / 10、5 / 50/6/60阵列上,无论您需要什么大小-我们将数据存储在FC SAN LUN上,通常在“第2层” / 10krpm磁盘组上。日志应位于单独的非常快(15krpm)小型(10GB或更小?)RAID 1阵列对上-我们将其保存在FC SAN LUN上,通常在非常小的“ tier1” / 15krpm磁盘组或“ tier0” /上ssd组。

无论哪种方式,您都希望它们中的每个块都位于单独的主轴/阵列上以提高性能-当然,它们都可以在单个磁盘上工作,但是我想您正在寻求性能和成本之间的平衡。

我们将master / tempdb与常规数据库存储在一起,但是您可以将其分成单独的数据阵列LUN。

希望这可以帮助。


关于日志驱动器很小的有趣之处。这有助于提高写入速度吗?尝试使日志文件驱动器的大小与数据可以处理的大小一样好吗?
肖恩·霍华特,2009年

还不
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.