mysql是软件还是硬件,高性能MySQL:平衡硬件RAID和软件RAID

操作系统、文件系统和操作系统看到的驱动器数量之间的相互作用可以是复杂的。Bug、限制或只是错误配置,都可能会把性能降低到远远低于理论值。

如果有10块硬盘,理想中应该能够承受10个并行的请求,但有时文件系统、操作系统或RAID控制器会把请求序列化。面对这个问题- 个可行的办法是尝试不同的RAID配置。例如,如果有10个磁盘,并且必须使用镜像冗余,性能也要好,可以考虑下面几种配置:

配置一个包含五个镜像对(RAID 1)的RAID 10卷。操作系统只会看到一个很大的单独的硬盘卷,RAID 控制器会隐藏底层的10块硬盘。

1efae9c065f5c055f5f75c87d5472b2e.png

在RAID控制器中配置五个RAID 1镜像对,然后让操作系统使用五个卷而不是一个卷。

在 RAID 控制器中配置五个 RAID 1镜像对, 然后使用软件 RAID 0把五个卷做成一个逻辑卷,通过部分硬件、部分软件的实现方式,有效地实现了RAID 10。

哪个选项是最好的赖于系统中所有的组件如何相互协作。不同的配置可能获得相同的结果,也可能不同。

我们已经提醒了多种配置可能导致串行化。例如,ext3 文件系统每个inode有一个单一的Mutex,所以当InnoDB是配置为innodb flush method=0_ DIRECT (常见的配置)时,在文件系统会有inode级别的锁定。这使得它不可能对文件进行I/O并发操作,因而系统表现会远低于其理论上的能力。

我们见过的另一个案例,请求串行地发送到一个10块盘的RAID10卷中的每个设备,使用ReiserFS文件系统,InnoDB 打开了innodb file per_ table选项。尝试在硬件RAID1的基础上用软件RAID 0做成RAID 10的方式,获得了五倍多的吞吐,因为存储系统开始表现出五个硬盘同时工作的特性,而不再是一个 了。造成这 种情况的是一个已经被修复的Bug,但是这是一个很好的例证,说明这类事情可能发生。

串行化可能发生在任何的软件或硬件堆栈层。如果看到这个问题发生了,可能需要更改文件系统、升级内核、暴露更多的设备给操作系统,或使用不同的软件或硬件RAID组合方式。应该检查你的设备的并发性以确保它确实是在做并发I/O (本章稍后有更多关于这个话题的内容)。

最后,当准备上线一种新

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览32150 人正在系统学习中 相关资源:基于单片机的智能灌溉喷洒系统的设计_单片机灌溉喷头-单片机文档…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月14日
下一篇 2021年2月14日

相关推荐