【问题标题】:How to shrink ibd files with BLOB fields?如何使用 BLOB 字段缩小 ibd 文件?
【发布时间】:2023-03-27 20:18:01
【问题描述】:

我有一个包含许多 NULL 值的 BLOB 字段的大表。我启用了多个表空间并为每个表获取了一个单独的 ibd 文件。这个表的物理大小远远大于我自己计算的大小,所以我的结论是应该可以缩小这个 ibd 文件,但我仍然无法做到这一点,即使在重新加载转储文件之后。我验证了转储文件确实包含插入 NULL 值的 SQL 语句。 缩小此表的物理大小的任何提示?还是因为 MySQL 为 blob 分配了固定大小,所以这是不可能的?

【问题讨论】:

  • 我以为我已经尝试将 ROW_FORMAT 设置为 COMPACT 并且没有工作,但现在它正在工作。 Antelope 和 Barracuda 文件格式都收缩文件: ALTER TABLE DOC ENGINE=InnoDB ROW_FORMAT=COMPACT;但即使我只是说:ALTER TABLE DOC ENGINE=InnoDB;
  • 在启用多个表空间后,您显然尝试过 OPTIMIZE TABLE?从 SQL 转储重新导入时,您可能还需要手动删除文件。
  • 根据the doc,MySQL 不应该为可变长度列分配固定数量的磁盘。从 SHOW TABLE STATUS 发布数据。

标签: mysql null blob shrink


【解决方案1】:

删除 BLOB 列上的索引(如果有) 请提供SHOW TABLE STATUS LIKE '<table_name>'的o/p

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 2011-02-19
    • 1970-01-01
    • 2021-12-12
    • 2014-07-24
    • 2018-03-18
    • 2013-05-29
    • 2011-09-13
    相关资源
    最近更新 更多