我已经对大型数据库(数亿条记录)中的许多表运行了许多不同的 DELETE 查询。哪种方法更快 - 对每个修改的表运行 OPTIMIZE TABLE。还是仅将 mysqldump 到文件中,然后从文件中恢复?
认为这将是平等的。只是 mysqldump | mysql 会更快 ;)
答案1
OPTIMISE TABLE
将会更快,因为数据不需要转换为命令行客户端使用的文本格式mysqldump
并进行消化mysql
。
如果你正在使用,InnoDB
那么你可以做另一个技巧,
ALTER TABLE $table ENGINE innodb;
这将通过将所有行复制到新表空间并在完成后替换当前表来重建表。但是,在发生这种情况时,原始表不会阻止读取者。当然,写入者将被阻止更新,直到操作完成。