mysql - 在MySQL,MyISAM中,是否可以将带有分区的表更改为多个硬盘驱动器?

标签 mysql partitioning myisam hard-drive

在MySQL、MyISAM中,是否可以将带分区的表更改为多个硬盘?

我的硬盘驱动器的磁盘空间即将耗尽。

有人遇到这个问题吗?你是如何解决的?

最佳答案

是的,可以将表分区到多个驱动器上。查看官方手册,其中深入介绍了这个主题。

http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

以下是在多个驱动器上对现有表进行分区的示例:

ALTER TABLE mytable
    PARTITION BY RANGE (mycolumn)(
     PARTITION p01 VALUES Less Than (10000)
       DATA DIRECTORY = "/mnt/disk1"
       INDEX DIRECTORY = "/mnt/disk1",
     PARTITION p02 VALUES Less Than (20000)
       DATA DIRECTORY = "/mnt/disk2"
       INDEX DIRECTORY = "/mnt/disk2",
     PARTITION p03 VALUES Less Than MAXVALUE
       DATA DIRECTORY = "/mnt/disk3"
       INDEX DIRECTORY = "/mnt/disk3"
    );

请注意,这需要关闭 NO_DIR_IN_CREATE。在windows下好像不行,在InnoDB上好像也不行。

如果最后一个分区的磁盘空间不足,您可以使用以下语句将其拆分:

ALTER TABLE mytable REORGANIZE PARTITION p03 INTO 
( 
    PARTITION p03 VALUES Less Than (30000)
       DATA DIRECTORY = "/mnt/disk3"
       INDEX DIRECTORY = "/mnt/disk3",
     PARTITION p04 VALUES Less Than MAXVALUE
       DATA DIRECTORY = "/mnt/disk4"
       INDEX DIRECTORY = "/mnt/disk4"
);

关于mysql - 在MySQL,MyISAM中,是否可以将带有分区的表更改为多个硬盘驱动器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7562747/

相关文章:

mysql - 如何将 MySQL TIME 舍入到最接近的小时(不是 DATE TIME/TIMESTAMP)

php - MySQL查询拉一行并显示结果的第一个字母

mysql - 同时按列表和范围分区 - MySQL 多分区

azure - Power BI 不支持 DocumentDB 分区集合吗?

mysql - 如何像 MyISAM 一样快速地将数据导入 InnoDB 表

mysql - 为了性能有必要用 'Limit 1'代替 'SQL SELECT'吗?

c - 三爪分区(动态编程示例)

mysql - 重新同步MySQL自增字段

mysql - 将表类型从 MyISAM 更改为 InnoDB

php - 间隔 10 分钟的日期和 cron