首页 > 数据库 > mysql教程 > 如何清理和缩小 MySQL InnoDB 存储引擎?

如何清理和缩小 MySQL InnoDB 存储引擎?

Mary-Kate Olsen
发布: 2024-12-18 22:09:17
原创
208 人浏览过

How Can I Clean Up and Shrink My MySQL InnoDB Storage Engine?

MySQL InnoDB 存储引擎清理

要清理 MySQL InnoDB 存储引擎并从已删除的表中删除数据,请按照以下步骤操作:

理解 InnoDB架构

InnoDB 在 ibdata1 文件中存储了六种类型的信息:

  • 表数据
  • 表索引
  • MVCC(多版本并发)控制)数据
  • 表元数据(数据字典)
  • 双写入缓冲区
  • 插入缓冲区

你可以运行 OPTIMIZE TABLE 吗?

使用 OPTIMIZE TABLE存储在 ibdata1 中的 InnoDB 表有两个效果:

  • 它使表的数据和索引在文件内连续。
  • 它通过附加修改的数据和索引使 ibdata1 增长。

你可以运行 OPTIMIZE TABLE 吗innodb_file_per_table?

启用此选项后,OPTIMIZE TABLE 会为每个 InnoDB 表创建单独的 .ibd 文件。虽然这种隔离将数据和索引与 ibdata1 分开,但它不会从 ibdata1 中删除数据字典条目。

InnoDB 基础设施清理

要缩小 ibdata1 并删除不必要的数据:

  1. 将所有数据库转储到 SQL 文本文件中(SQLData.sql).
  2. 删除除 mysql 和 information_schema 之外的所有数据库。保留用户授权。
  3. 将 innodb_fast_shutdown 设置为 0 以刷新事务更改。
  4. 关闭 MySQL。
  5. 使用这些修改 my.cnf(或 my.ini)设置:

    • innodb_file_per_table
    • innodb_flush_method=O_DIRECT
    • innodb_log_file_size=1G(确保它是 25% innodb_buffer_pool_size)
  6. 删除 ibdata 和 ib_logfile 文件。
  7. 启动 MySQL。
  8. 导入 SQLData.sql。

经过这个过程, ibdata1 将仅包含表元数据,各个 InnoDB 表将存储在扩展名为 .frm 和 .ibd 的单独文件中。然后可以使用 OPTIMIZE TABLE 来缩小表的 .ibd 文件。

以上是如何清理和缩小 MySQL InnoDB 存储引擎?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板