如果我摆脱RAID 5配置并将每个数据库放在一个单独的驱动器上,我会看到更好的性能吗?由于其他地方的镜像,RAID 5提供的冗余不是必需的.
那么服务器是否能够并行执行对不同数据库驱动器的读/写操作?至少比什么时候在RAID?
解决方法
由于其倾倒写入性能,RAID5通常是数据库的性能瓶颈.如果你的阵列是一个直的5驱动器阵列,那么写入磁盘的每个块可能会导致三次读取,然后是奇偶校验计数,然后是两次写入(更新的块和更新的奇偶校验块)以及每个更新的页面. DB将导致至少两次块写入:一次写入事务日志,一次写入数据文件.如果你运行的是4驱动器加热备用,情况会好一些,但不会太多.这就是为什么通常使用RAID1 0而不是RAID5来进行数据库工作(或者有时候RAID1E或者类似的,在可用的情况下,表现得更好).
一切都被写入事务日志以及数据文件的事实是一个重要的事实.通过将日志文件和数据文件放在不同的驱动器上(以及不同的磁头组),可以大大加快插入/更新操作的速度.您可能最好在五个驱动器周围安排数据库,使每个驱动器的日志和数据都在不同的驱动器上.您如何安排这将取决于每个数据库的预期活动 – 您希望避免两个数据库在可能的情况下同时忙于同一驱动器.
另一种选择是拥有两个独立的RAID1阵列 – 一个用于所有日志文件,另一个用于数据文件.我怀疑你会在每个数据库(两个数据日志)都在自己的单个驱动器上看到明显更好的性能.或者,如果您真的不关心冗余(例如,如果您的镜像使用复制/群集安排进行维护,这意味着如果主DB死亡,您将丢失很少的事务),您可以使用一对RAID0而不是一点点额外的速度.
如果三个驱动器的一点钱不是问题而且你的机器有更多驱动器的空间,你可以有一对RAID10阵列(一个用于数据,一个用于日志,总共8个驱动器),那么你就拥有了没有RAID5的冗余写入性能问题,您可以通过将日志和数据放在不同的驱动器上来提高写入性能,并且RAID10可能会出现潜在的读写增强(带有良好控制器的4驱动器RAID10往往与2驱动器RAID0的性能相似).我们的一些生产数据库正在进行这样的安排,我可以告诉你,与我测试过的其他安排相比,它们一直在飞行.如果您有一个支持RAID1E的硬件控制器(不幸的是它在不同的控制器上有不同的名称),那么您可以使用两个3驱动器RAID1E阵列,只需要6个驱动器.