在表副本上运行优化



我在MySQL中有一个InnoDB表,它曾经包含大约60万行。在删除400k+行之后,我的猜测是我需要运行一个OPTIMIZE.

但是,由于在此操作期间表将被锁定,因此此时站点将不可用。所以,我的问题是:我应该在活动数据库表(略低于200k行)上运行优化吗?或者是否可以创建该表的副本,在该副本上运行优化,然后重新命名两个表,以便将数据复制回活动表?

如果你创建了一个副本,那么如果你执行CREATE TABLE..AS SELECT..,它应该已经被优化了。不需要单独运行

但是,我会考虑将要保留的200k行复制到一个新表中,然后重命名表。这种方法可以减少步骤和工作量。

CREATE TABLE MyTableCopy AS
SELECT *
FROM myTable
WHERE (insert Keep condition here);
RENAME TABLE
    myTable TO myTable_DeleteMelater, 
    MyTableCopy TO myTable;

最新更新