【问题标题】:Disk usage for optimizing a partitioned MySQL-Table用于优化分区 MySQL 表的磁盘使用情况
【发布时间】:2015-11-11 03:13:56
【问题描述】:

我有一个包含 300 万行的大型 MyISAM 表,由于每行中有 10KB 的 blob,因此大小为 31 GB。该表已经有 30 个分区。我想优化表,因为我要删除包含一些旧数据的行并调整 blob 的大小。 我的问题是关于优化时的磁盘使用情况:

如果我对整个表进行优化,MySQL 是否会逐步遍历分区并一次只优化一个分区,因此只需要一个小分区的额外空间?或者我是否必须优化一个或几个分区,以便在优化时不会有太多额外的磁盘空间。

【问题讨论】:

  • 大概,this会给你答案,简要说明; partition 优化有 separate 命令,因此,很可能,明显的 optimize table 将为整个表保留空间,而不是为每个分区保留空间

标签: mysql optimization space disk partition


【解决方案1】:

仅优化 s 大小约为 1 GB 的分区只需要几秒钟,而且我看不到任何大量磁盘使用情况。

【讨论】:

    【解决方案2】:

    (我的回答假设 InnoDB。即使我过于悲观,“解决方案”应该适用于 MyISAM。)

    对于 InnoDB,请记住 innodb_file_per_table 的问题。

    OPTIMIZE 将构建整个表的副本。

    解决方案:如果空间紧张,可以一次优化一个分区

    ALTER TABLE REORGANIZE PARTITION ...
                    ( INTO PARTITION ...  );
    

    是的,您需要一次为一个分区构建...,并一次执行一个。

    (不要做OPTIMIZE PARTITION,那会优化整个表格。)

    您想详细说明一下您的桌子是什么样的吗?我可能想劝你不要进行分区,或者劝你采用不同的分区方式。

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 2018-06-30
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      相关资源
      最近更新 更多