一:参数innodb_per_file_table :推荐默认设置为on ,5.6.6之后默认的设置也是这样,意思是将表数据单独存储在.idb后缀的文件中。
如果执行drop table 可以删除表数据。
二:执行delete 语句删除了表数据,但是磁盘空间却没有变小。
原因:行空间可以复用,没有释放,如果一个页的数据都被清空,那么也就都可以复用。
如果表中数据按照自增主键插入,空间就比较连续。
如果对表中数据由频繁的增加,删除操作,就会出现很多空洞
解决办法:从新建表
这是5.5之前
这是5.6 之后:
上图是online 的实现原理。
alter table t add FULLTEXT(field_name);
这条语句会阻塞增删改操作。
要理解online 和inplace 俩种机制,概念。
是online 就一定 inplace, 是inplace 不一定 online .比如上边的语句就不是online
optimize talbe 又是重建表,又是 mdl读锁,analyze table ,不是重建表,加了mdl读锁,alter table