通常,RDBMS (我是MySQL用户)的性能瓶颈是磁盘访问。与传统的主轴驱动器相比,SSD提供了很好的性能。
问:是否有可能通过附加多个空间减少的驱动器来提高性能,因为这样会有更多的磁头来读取数据?
比如用4500 2TB 7.2k RPM驱动器替换2TB 7.2k RPM驱动器?
发布于 2011-09-21 19:28:26
这在很大程度上取决于存储引擎。
对于MyISAM,我认为这将是一个很好的主意,因为您可以使数据像您想要的那样连续。这将有利于涉及大容量操作和大范围扫描的查询。压缩和修复MyISAM以改进表格式的工具集也可以使访问变得更好。IMHO并发插入可以在这样的磁盘环境中蓬勃发展。
InnoDB是完全不同的故事。
如果禁用了诺姆b_文件_每_表格,数据可以分散在整个ibdata1中,从而分散在多个磁盘中。您可以针对InnoDB表运行优化表,并使数据和索引页连续,但这可能会导致两个问题:
不要忘记驻留在ibdata1中的四种类型的数据:
经常写入MVCC数据以保护数据完整性。还有与ib_logfile0和ib_logfile1 (重做日志)的持续交互。从InnoDB缓冲区池每10秒刷新一次数据。总的来说,可以安全地说,数据在多个磁盘之间的传播和I/O性能在ibdata1内部有足够的碎片化之前可以显示出轻微到适度的性能改善。
现在,如果启用了innodb_file_per_table,事情可能会变得更加混乱。原因如下:
清理ibdata1 1并将所有InnoDB表与ibdata1 1分离,您将有一个较小的ibdata1。但是,对InnoDB表的每次访问都需要通过表元数据始终通过ibdata1导航其使用。您实际上无法将表元数据(ibdata1)与表(.ibd)从语义上分离开来。无论ibdata1在哪里,磁盘I/O必须始终通过ibdata1。
总体效果:表碎片仅限于.ibd文件,可以通过优化表减少和重新组织,但没有真正实现额外的I/O性能增强。
如何将所有.ibd文件放入一组不同于ibdata1的磁盘中,并使用符号链接?据珀科纳说,这会造成更多的混乱。。
结论
当涉及到在一个驱动器上使用多个驱动器时,我非常喜欢MyISAM而不是InnoDB。
发布于 2011-09-22 01:30:40
是的,由于我们所称的RAID技术,多个驱动器将提供更好的吞吐量。对于数据库,您需要RAID 10 (条形镜像)。
使用4(N)驱动器,您的写入速度将提高一倍(N/2),连续读吞吐量将提高四倍。寻找时间将保持大致相同,你将失去一半的空间镜像。
https://dba.stackexchange.com/questions/6035
复制相似问题