Mr.*_*ble 3 raid configuration raid5 sql-server
我有 5 个数据库,每个 300GB,目前位于由 5 个驱动器组成的 RAID 5 阵列上。同时,所有数据库都被大量使用,因此驱动器速度是一个问题。
如果我摆脱了 RAID 5 配置并将每个数据库放在一个单独的驱动器上,我会看到更好的性能吗?由于在其他地方进行了镜像,因此不需要 RAID 5 提供的冗余。
然后服务器是否能够并行读取/写入不同的数据库驱动器?至少比在 RAID 中时更是如此?
这一切都在 Windows 2003 / SQL 2008 上。
如果同时使用这些数据库,那么将数据库放在不同的主轴上很可能会执行得更快。如果它们经历彼此偏移的繁忙时段,尽管单个 RAID 阵列的执行速度会更快,因为单个数据库的读取将分布在多个驱动器上(当然,如果它在单个驱动器上,则永远不会)。
由于其倒写性能,RAID5 通常是数据库的性能瓶颈。如果您的阵列是一个直接的 5 驱动器阵列,那么写入磁盘的每个块可能会导致 3 次读取,然后是奇偶校验计算,然后是两次写入(更新的块和更新的奇偶校验块)以及更新的每个页面DB 将导致至少两次块写入:一次写入事务日志,一次写入数据文件。如果您运行的是 4 个驱动器加热备件,情况会好一些,但不会太多。这就是为什么在数据库工作中通常使用 RAID1+0 而不是 RAID5(或者有时使用 RAID1E 或类似的,如果可用,性能类似更好)。
一切都被写入事务日志以及数据文件的事实是一个重要的事实。您可以通过将日志文件和数据文件放在不同的驱动器(以及不同的磁头组)上来大大加快插入/更新操作的速度。您最好在五个驱动器周围安排数据库,以便每个驱动器在不同的驱动器上都有其日志和数据。您如何安排这取决于每个数据库的预期活动 - 如果可能,您希望避免两个同时忙碌的数据库位于同一驱动器上。
另一种选择是拥有两个单独的 RAID1 阵列——一个用于所有日志文件,一个用于数据文件。我怀疑你会从这个棕褐色中看到明显更好的性能,因为每个数据库(数据+日志)都在它自己的单个驱动器上。或者,如果您真的不关心冗余(例如,如果您的镜像是使用复制/集群安排维护的,这意味着如果主数据库死了,您将丢失很少的事务),您可以使用一对 RAID0 代替额外的速度。
如果三个驱动器的小钱不是问题,并且您的机器有更多驱动器的空间,您可以拥有一对 RAID10 阵列(一个用于数据,一个用于日志,总共 8 个驱动器),那么您将拥有没有 RAID5 的冗余写入性能问题,您可以通过将日志和数据放在单独的驱动器上来提高写入性能,并且在 RAID10 中经常看到潜在的读写提升(具有良好控制器的 4 驱动器 RAID10 的性能往往与 2 驱动器 RAID0 相似) . 我们的一些生产数据库就是这样安排的,我可以告诉你它们飞起来了与我测试过的其他安排相比。如果您有一个支持 RAID1E 的硬件控制器(不幸的是,它在不同的控制器上有不同的名称),那么您可以对两个 3 驱动器 RAID1E 阵列执行相同的操作,只需要 6 个驱动器。