参数innodb_file_per_table控制着表数据存放为值,ON表示表数据放在.idb后缀文件中。OFF表示系统共享空间,默认值为ON。而且如果为OFF,则即使删除表,表空间也不会释放。推荐设置为ON

delete 记录和表都不会释放表空间,会使得被释放的页被复用,也就是会产生空洞。

那如何去去掉空洞呢?

  1. 重建表。 使用alter table A engine=InnoDB命令。其隐含意思是alter table t engine=innodb,ALGORITHM=inplace;
  2. analyze table t 只是对表的索引信息做重新统计,没有修改数据
  3. optimize table 等于 recreate+analyze