我们试图评估通过将现有的应用程序.mdf文件切换到RAID10 LUN与他们现在生活的现有RAID5 LUN相比,可以获得哪些潜在的性能改进。事务日志已经存在于RAID10 LUN上。
所以问题是,如果我们将数据文件移动到RAID10,最终用户会看到GUI中的性能改进吗?或者,当发生检查点并将更改写入数据文件时,写入数据文件的速度会更快,但最终用户级别不会看到任何改进?
发布于 2015-03-25 20:58:39
这里需要考虑两种类型的活动:读和写。
正如您正确指出的,MDF/NDF写入是通过检查点过程完成的,用户不应该受到事务时间的影响。
当所需的数据还没有在RAM中(缓冲区缓存中)时就会发生读取。因此,理想情况下,用户活动不应该经常受到影响。但是如果是的话,无论是RAID 10还是RAID 5,都可以很快地获取数据。RAID 5的痛点是写而不是读。
但如果你丢了一张磁盘-那又怎样?
对于RAID 10,性能没有损失。当放进替换磁盘时,镜像会复制到它上面。使用RAID 5,每次阅读都需要做一些数学运算。当一个新的磁盘出现时,它必须读很多,写很多。
但是RAID 5更便宜。1TB的磁盘将为您提供800 10的空间(取决于您的设置),但是RAID 10只会为您提供500 10的空间。不过,磁盘活动稍微昂贵一些。
将数据文件(而不是日志)放在RAID 5上是“好的”,但是如果磁盘足够便宜,RAID 10更好。
发布于 2015-03-25 22:27:43
这在一定程度上取决于您在幕后拥有什么样的存储系统。你看,读和写IO操作是非常不同的。
在RAID 5中,要执行单个块写入,必须:
因此,对于单个随机写入,RAID 5每次写入需要4个操作。这就是所谓的“写惩罚”。
RAID10,您只需要简单地写两次新块--所以它的写代价是2。
对于随机写入操作来说,在一个简单的级别上-- RAID5要糟糕得多。但是,一旦您在缓存中考虑因素,这个图片就会发生变化。写IO处于软时间约束下--只要IOs的总数能够在合理的时间范围内完成,就可以编写缓存。如果你构建了一个完整的条带,你可以一次写完--你不需要读回来计算奇偶。
这使得4+1 RAID5的写入代价仅为1.25,这意味着它比RAID1+0更适合持续的顺序写入IO。这很可能正是你的数据库所做的。(特别是事务日志基本上就是这样。您的数据文件可能不是,这在一定程度上取决于您是在更新还是添加数据)
对于read,您有一个稍微不同的情况-- read处于一个困难的时间约束下--在数据被获取之前它是不完整的。你的存储控制器会有一个缓存和预取机制,但是.好吧,我想您的DB无论如何都是在内存中缓存。
实际上,这意味着从磁盘读取IO (对于数据库)很可能是最坏的情况--您不能预取真正的随机IO。RAID 1+0因此会更有益处,因为任何给定的读取都有两个可能的来源(每个子镜像)。
就故障模式而言- RAID 1+0相当简单。如果一个驱动器失败,它只是来自另一个子镜像的副本。RAID-5重建需要-基本上-读取整个RAID组。因此,4个驱动器(在一个4+1中)而不是一个。在此期间,性能将显著下降,因为任何读取都必须重建-它需要从所有4个驱动器读取(驱动器也是繁忙的)。企业级驱动器的故障频率并不高,但仍然会不时发生。
最后--绝不是最不重要的--是驾驶的价格和你所需要的数量。数据中心空间不便宜,企业级驱动器也不便宜。RAID 1+0‘成本’你50%的磁盘。RAID-5花费20%。(我可能不会建议超过5个磁盘raid组-越大,故障概率越高,重建时间越长)。
但是,是的--在比较RAID类型时,您必须考虑缓存元素,因为高效缓存大大提高了简单的驱动器速度访问时间。所有控制器都进行缓存,而真正昂贵的存储数组拥有大量缓存。所以如果你是SAN的话,这可能更有意义。
这也可能是值得考虑的SSD - SSD是昂贵的每一个工作,但有一个很好的成本每IOP。对于随机读取的轮廓,是如此难以纺丝铁锈处理,它是几乎完美的。混合驱动或分层存储选项也可能是其中的一个因素。
https://dba.stackexchange.com/questions/96256
复制相似问题