optimize table、analyze table 和 alter table 这三种方式重建表的区别。
从 MySQL 5.6 版本开始,alter table t engine = InnoDB(也就是 recreate)默认的就是一个mysql online DDL 重建表的过程。(有短暂MDL写锁,后转换为MDL读锁)
analyze table t 其实不是重建表,只是对表的索引信息做重新统计,没有修改数据,这个过程中加了 MDL 读锁;
optimize table t 等于 recreate+analyze。