mySQL数据库可以有多个文件来分散IO吗?

时间:2014-07-25 15:46:44

标签: mysql vldb

在用于IO密集型数据库的SQL Server中或通常用于VLDB的数据库中,我们创建多个数据库文件并将它们放在单独的磁盘/服务器上,以分散IO工作负载。

我无法看到mySQL如何实现这一点,因为默认情况下所有数据库都是在实例目录中创建的,没有选项可以将它们放在别处或创建多个文件。我错过了什么?

1 个答案:

答案 0 :(得分:0)

大多数人使用RAID来分散IO工作负载。

如果确实需要,可以使每个数据库的子目录成为另一个磁盘卷的符号链接。但这通常不是必需的。

您还可以将重做日志,二进制日志和查询日志移动到数据目录之外的另一个目录。这些文件具有相当高的IO使用率,因此这可以平衡IO负载。


重新评论:

MySQL对该名称的“文件组”没有任何选项。但是您可以将给定的表移动到自己的数据库中。 MySQL上的数据库非常简单,将它们视为表的命名空间。访问多个数据库不需要单独登录,只需限定查询中的表名即可。

如果您希望给定数据库在Windows上拥有自己的物理磁盘,我会使用Windows磁盘管理器mount a disk to an empty directory而不是不同的驱动器号。因此,您可以将MySQL数据目录下的一个子目录映射到专用物理磁盘。因此,该子目录下的数据和索引文件将位于自己的磁盘上。

MySQL在数据库特定的子目录之外管理一些数据文件。例如,日志,以及中央InnoDB表空间(即使您配置innodb_file_per_table也很重要)。其中每个都允许您指定路径,以便您可以在文件系统的任何位置找到它们。但是你无法将每个表或每个数据库的写入分开。

MySQL是与Microsoft SQL Server(或Oracle等)不同的产品,您不应期望SQL Server的每个功能都在MySQL中具有直接模拟。