我有一个RAID10设置和2个备用磁盘4个驱动器。 我们一直监视每个传输(读取和写入)计数器的性能平均值。 我们购买了2个磁盘,使用6个磁盘(2个磁盘)重buildRAID10,性能保持不变。 是否有一些限制,RAID10只能改善4个磁盘倍数(4,8,12等)?
我正在使用戴尔R510。 这是一个SQL服务器。 我们在卷上保留了相同的文件。
我正在使用戴尔Perc H700 1GB非易失性caching。
AD / T大约是200ms。
这些是15K sas驱动器600GB
我不知道戴尔PERC控制器如何做跨度。 它只是询问我需要多less个磁盘(在这种情况下是2或3)。
我们添加主轴的原因是为了增加每次交易的总时间。 我们从RAID1到RAID10(4个磁盘),性能翻了一番。 我们希望增加33%。 ADs / Tbuild议在20ms以内。 我们现在是100.我们意识到我们不会通过增加2个磁盘来达到20,但是因为在我在这里之前他们在400ms,所以在60年代的时候,它们可以保持不变。
每秒传输量约为850个
我理解添加磁盘的逻辑不会加速针对给定磁盘的单个传输。 但是对于所有的意图和目的,AD / T(或者读或写)都是根据窗口对一个给定的磁盘/卷执行某些操作所花费的时间的量度。 所以如果整个事务需要40毫秒,但实际上是写入4个磁盘,如果并行完成,理论上每个磁盘花费10毫秒。 总有这样的机会写到一个磁盘,然后到下一个磁盘,但是怎么能有人知道它在做什么?
所以对于这个问题,4个磁盘花费的时间应该与6个磁盘成正比。 即使磁盘达到最大可能,每个磁盘也不会更快,但是Windows应该看起来更快。
由于索引的大小,我们所有的sql文件需要的总空间,以及成本,ssd不是我们的select。 固态硬盘的大小只是不存在,虽然对于较小的文件可能是有道理的。
如果添加磁盘无助于提高速度,那么如何解释从2个磁盘到4个磁盘时性能提高了50%,而从4个到6个时却没有任何增加?
您应该深入了解SQL性能统计信息以及驱动器统计信息。 如果你有很多的连接,可能会有助于制作多个较小的TempDB文件。 (请阅读,这对我们来说是一大收获http://msdn.microsoft.com/en-us/library/ms175527.aspx )如果缓冲区的caching率低于93,则可能需要更多的内存。 一个统计数据不足以诊断问题。 有不止一种方式来囤积存储。
如果该框是2008年使用资源监视器来确定哪些数据库文件是最繁忙的。 让他们在不同的主轴是最好的性能修复。 具体来说,如果你有大量的读写操作,而不是大部分的读操作,你应该考虑获得第二个驱动器控制器,几个较小的15k外置驱动器,以及使LOG和TempDB文件远离带有数据的驱动器集。
您可能会受到公交车的限制,也会考虑购买多车道线缆以提高吞吐量。
总线甚至处理器都可以处理数据。 如果这确实是瓶颈,那么您将需要考虑获取另一台计算机,将所添加的两个磁盘拉出,然后将其添加到另一台计算机上的raid10。
此时,您将在机器上的两个RAID上设置并行文件系统,以进一步提高性能(您应该看到数据读取和写入速率的大幅增加)
以上所有的评论,特别是“肮脏的小秘密”正在轨道上。
对于SQL性能提示RE磁盘系统,请参阅: https : //serverfault.com/a/359689/13716
RAID的肮脏的小秘密:
如果由于任务太多而没有足够磁盘而导致瓶颈排队,添加更多磁盘只会提高性能。 它不会使单个磁盘更快,而且实际上会增加一定的开销。 最后,从磁盘读取数据的方式与之前的方式完全相同,但仍然需要等待很长时间。 不同之处在于,您可以同时在多个磁盘上执行此操作,只有在保持所有磁盘都处于忙碌状态时才有所帮助。
切换到更高速度的磁盘(如SSD)可能会有所帮助。 如果延迟和寻找时间是问题的话,单个固态硬盘就可以胜过整个温彻斯特硬盘。
一个有趣的解决scheme,仍然在开发中,但已经显示出很多的承诺是Facebook的Flashcache模块。 这只是Linux,但如果性能是一个问题,那么你不应该使用Windows无论如何。 由Percona的Vadim Tkachenko完成的一些基准testing显示,闪存caching可以让你在SSD上运行99%的性能 ,而且成本只有一小部分 – 假设你的命中分布不是均匀分布在整个数据集中。