从 MySQL 5.6 版本开始, alter table t engine = InnoDB(也就是 recreate)analyze table t 其实不是重建表,只是对表的索引信息做重新统计,没有修改数据,这个过程中加了 MDL 读锁;optimize table t 等于 recreate + analyze。