如果Microsoft SQL Server 2008标准版服务器configuration如下,则选项1提供优于选项2的优势吗?
基本configuration:
选项1:
在RAID 10上configuration一个虚拟磁盘并使用一个文件组
选项2
在RAID 10上configuration两个虚拟磁盘并使用两个文件组
常识告诉我,没有速度优势,因为RAID 10仍然只能以相同的速度读/写。
有人可能会build议常识是否存在,或者是否有理由忽略了为什么这会有利?
不知道是否有多个文件组的性能增强function,但是您可能会发现文件组中的多个文件会提高性能。
回顾一下我对这个问题的贡献: 为什么CPU在我们的8-CPU SQL Server框中使用如此不对称?
我们小心地将最常用的表设置为文件组,其中包含多个文件。 其中一个增强的性能是SQL将请求发送到文件组中的每个文件 – 所以如果BigOverUsedTable在FileGroup1上,而FileGroup1在其中有四个文件,而你的数据库有8个内核,它实际上会使用四个内核来做“select大数字从BigOverUsedTable嘎吱嘎吱的查询“ – 而否则,它将只使用一个CPU。 我们从这个MSDN文章中得到了这个想法:
http://msdn.microsoft.com/en-us/library/ms944351.aspx
从TFA:
“文件组使用并行线程来改善数据访问,当顺序访问表时,系统为每个文件并行创build一个单独的线程,当系统对包含四个文件的文件组中的表执行表扫描时,它使用四个单独的线程来并行读取数据,一般来说,在不同的磁盘上使用多个文件可以提高性能,文件组中的文件太多会导致太多的并行线程,造成瓶颈。
由于此build议,我们在8核心机器上的文件组中有四个文件。 它工作得很好。
你将得到的唯一的好处是操作系统将在Windows中有两个物理磁盘队列,而不是一个,并且你将准备添加另一个数组并将来将数据库文件移动到它。 两者都是相当小的好处。
如果你有时间,那么你总是可以试试看,而不是猜测!
我没有看到2个虚拟磁盘超过1个虚拟磁盘的性能增益,但是有额外的文件和文件组总是有利于未来的打样。
把你的索引放在一个单独的文件组中是很好的做法,那么你总是可以将文件组移动到一组新的主轴上,以获得额外的性能提升!
不会有任何可测量的速度优势,但正如其他人所指出的那样,拥有两个文件组是一个更有前途的未来概念。
您的两个选项只是没有提供任何好处,因为在两种configuration中,I / O只会散布在所有物理磁盘周围。
如果你有4个物理磁盘,并且你真的想从它们(*)中获得最大的可能的性能,那么下面是如何做到的:
最后一点是最重要的一点; 通过这个configuration,你可以使两个文件组有效地并行工作,但是如果你可以把你的数据放在那里,这样就可以同时对它们进行I / O操作, 所以你可以把不同的表放在不同的文件组上,或者把它们中的一个用于表,另一个用于索引,或者……你有无穷无尽的解决scheme,这一切都取决于你的实际工作量。
(*)这实际上是一种高级优化,在大多数情况下它只是矫枉过正,因为单个文件组/单个卷/单个数组的pipe理将会简单得多,并且会达到非常类似的性能,除非实际上可以并行化I / O 。
选项2很可能导致驱动器磁头更多的物理移动,因为它们需要在两个逻辑磁盘之间来回切换。 这可能会也可能不会抵消单独磁盘队列获得的任何优势。 只有使用您的环境的testing才能得出确凿的结果。