首页 > 数据库 > mysql教程 > 我可以在不重建完整数据库的情况下从已删除的 InnoDB 表中删除数据吗?

我可以在不重建完整数据库的情况下从已删除的 InnoDB 表中删除数据吗?

Linda Hamilton
发布: 2024-12-14 17:01:12
原创
711 人浏览过

Can I Remove Data from Deleted InnoDB Tables Without a Full Database Rebuild?

优化 MySQL InnoDB 存储引擎以进行数据删除

问题:是否可以从已删除的表中删除数据无需重建整个 MySQL InnoDB 存储引擎

答案:是的,可以通过全面的清理过程。

解释:

InnoDB 存储各种ibdata1 文件中的数据类型,包括表数据、索引和系统元数据。当表被删除时,它们的数据和索引仍保留在 ibdata1 中,即使它们不再可访问。随着时间的推移,这可能会导致空间浪费和性能下降。

清理过程:

  1. 转储数据库:创建以下 SQL 转储除 mysql 和 information_schema 之外的所有数据库。
  2. 删除数据库:删除除 mysql 和 information_schema 之外的所有数据库。
  3. 禁用快速关闭:将 innodb_fast_shutdown 设置为 0 以刷新日志文件中的事务更改。
  4. 关闭MySQL:停止MySQL server.
  5. 修改配置:将 innodb_file_per_table、innodb_flush_method=O_DIRECT、innodb_log_file_size 和 innodb_buffer_pool_size 设置添加到 /etc/my.cnf。
  6. 删除 ibdata文件:* 删除所有 ibdata 和 ib_logfile* 文件。
  7. 重新启动 MySQL: 启动 MySQL,这将仅使用元数据重新创建 ibdata1。
  8. 导入数据库转储:恢复之前导出的SQL dump.

此过程之后,ibdata1 将仅包含元数据,而各个表将驻留在其自己的 .ibd 文件中。这允许使用 OPTIMIZE TABLE 优化各个表,减少浪费的空间并提高性能。

注意:确保删除数据库后正确重新建立用户授权至关重要。

以上是我可以在不重建完整数据库的情况下从已删除的 InnoDB 表中删除数据吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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