系统运行时优化每个表的 innodb 文件

系统运行时优化每个表的 innodb 文件

我有一个 800 GB 的 Moodle mdl_logstore_standard_log.ibd 数据库文件。我在 10-15 天内删除了大约 9 亿行。.idb 文件大约 800GB,删除后大小仍然相同。我想优化表格,以便修复此问题。

当用户继续使用 moodle 网页时运行 OPTIMIZE TABLE 是否安全?或者我应该阻止用户访问并运行 OPTIMIZE TABLE?

如果我停止访问,我必须在 48 小时内恢复访问。在这个过程中,如果优化过程没有完成,如果我必须中断它,我会遇到问题吗?

谢谢。

答案1

在您需要进行下一次大删除之前,请阅读以下博客并计划以更有效的方式进行删除: http://mysql.rjweb.org/doc.php/deletebig

与此同时,用户可以继续使用该表,尽管磁盘上有大量浪费的空间。也就是说,什么也不做。

如果磁盘空间是一个问题,并且表是在 时创建innodb_file_per_tableONOPTIMIZE TABLE则将缩小磁盘占用空间,但会降低用户访问量。您可能已经注意到 Delete 对用户访问有影响。(我的博客展示了避免这种影响的方法。)

如果你什么都不做,800GB 的文件将逐渐被新插入的行填满。这可能没问题。

相关内容