为什么表数据删掉一半,表文件大小不变
参数innodb_file_per_table控制着表数据存放为值,ON表示表数据放在.idb后缀文件中。OFF表示系统共享空间,默认值为ON。而且如果为OFF,则即使删除表,表空间也不会释放。推荐设置为ON。
delete 记录和表都不会释放表空间,会使得被释放的页被复用,也就是会产生空洞。
那如何去去掉空洞呢?
- 重建表。 使用
alter table A engine=InnoDB命令。其隐含意思是alter table t engine=innodb,ALGORITHM=inplace; analyze table t只是对表的索引信息做重新统计,没有修改数据optimize table等于 recreate+analyze
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果