我在MySql 5.7服务器上有一个表。我们每天存储大约1M行。在每行插入之后,我们在删除该行之后对该行进行一些处理。
由于大量的写操作,表磁盘空间正在迅速增加。所以我想做OPTIMIZE表。
因此,如果我在生产表上应用OPTIMIZE Table命令,它会给出任何停机时间。
OPTIMIZE表的最佳方法是什么?
MySql Server详细信息
服务器版本: 5.7
引擎: InnoDB
主机: Google Cloud Sql
由于
答案 0 :(得分:0)
是的,你是对的,OPTIMIZE TABLE将从MySQL 5.6.17或更高版本开始执行工作。我们在文档中找到了关于哪些操作支持在线DDL的说明:https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html
您可以尝试对此进行测试(我在评论后做了):
如果你有一个不能作为在线DDL工作的ALTER TABLE,那么有一个好的免费工具pt-online-schema-change可以帮助避免锁定行为,即使对于表重组操作也是如此。此工具不会锁定表,但会创建触发器,以便在复制所有行时,捕获任何更改并将其应用于新的副本表。