首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单驱动器与多驱动器

单驱动器与多驱动器
EN

Database Administration用户
提问于 2011-09-21 18:23:51
回答 2查看 2.6K关注 0票数 7

通常,RDBMS (我是MySQL用户)的性能瓶颈是磁盘访问。与传统的主轴驱动器相比,SSD提供了很好的性能。

问:是否有可能通过附加多个空间减少的驱动器来提高性能,因为这样会有更多的磁头来读取数据?

比如用4500 2TB 7.2k RPM驱动器替换2TB 7.2k RPM驱动器?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2011-09-21 19:28:26

这在很大程度上取决于存储引擎。

对于MyISAM,我认为这将是一个很好的主意,因为您可以使数据像您想要的那样连续。这将有利于涉及大容量操作和大范围扫描的查询。压缩和修复MyISAM以改进表格式的工具集也可以使访问变得更好。IMHO并发插入可以在这样的磁盘环境中蓬勃发展。

InnoDB是完全不同的故事。

如果禁用了诺姆b_文件_每_表格,数据可以分散在整个ibdata1中,从而分散在多个磁盘中。您可以针对InnoDB表运行优化表,并使数据和索引页连续,但这可能会导致两个问题:

  1. 使ibdata1成长
  2. 随着时间的推移性能恶化

不要忘记驻留在ibdata1中的四种类型的数据:

  • 表MetaData
  • 表数据页
  • 索引数据页
  • MVCC数据

经常写入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。

票数 7
EN

Database Administration用户

发布于 2011-09-22 01:30:40

是的,由于我们所称的RAID技术,多个驱动器将提供更好的吞吐量。对于数据库,您需要RAID 10 (条形镜像)。

使用4(N)驱动器,您的写入速度将提高一倍(N/2),连续读吞吐量将提高四倍。寻找时间将保持大致相同,你将失去一半的空间镜像。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/6035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档