按功能将 MySQL 存储分配到驱动器

2023-12-27

我想知道 MySQL 是否有能力指定将属于某个帐户(例如,代表特定应用程序或特定公司程序)的数据存储在文件系统中的某个特定位置(例如特定驱动器或 RAID) ),而不是将其捆绑在由 MySQL 为该服务器上的每个人管理的所有其他帐户、表和数据元素共享的同一物理文件结构中。

我知道我可以调整 MySQL 将其整个数据包存储在默认位置以外的位置,但我希望可能有一种方法可以通过函数来​​执行此操作,对于“某些数据但不是所有数据”。


在 MySQL 8.0 中,有一些选项可以指定每个表或表空间的位置。看https://dev.mysql.com/doc/refman/8.0/en/innodb-create-table-external.html https://dev.mysql.com/doc/refman/8.0/en/innodb-create-table-external.html

在 MySQL 的早期版本中,这些选项并不能一致地工作。如果您的表已分区,则可以为各个表分区指定目录,但不能为非分区表指定目录。去搞清楚。 :-)

也就是说,我从未遇到过值得花时间指定表的物理位置的情况。基本上,如果您的性能取决于一种 RAID 文件系统与仔细选择不同驱动器之间的差异,那么您已经输了。

相反,我一直采用这种方法:

  1. Use one datadir在快速 RAID 文件系统上。使用此数据目录下所有表和日志的默认配置。
  2. 为 InnoDB 缓冲池分配尽可能多的 RAM(当然取决于数据库的大小 - 不需要使用比这更多的 RAM)。 RAM 比任何磁盘(甚至 SSD)都要快几个数量级。所以你更愿意从 RAM 中读取数据。

如果这还不够性能,您可以采取其他措施来优化,例如创建索引,或修改应用程序代码以进行更多缓存以减少数据库读取,或使用消息队列推迟数据库写入。

如果这仍然不够性能,那么可以扩展到多个数据库服务器。换句话说,就是分片。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按功能将 MySQL 存储分配到驱动器 的相关文章

随机推荐