MySQL 5.7发行说明
随机插入或删除从一个二级索引可以导致指数变得支离破碎。分裂意味着物理磁盘上的索引页的顺序不是接近指数排序的记录页面,或者有许多未使用的页的64页的块分配给该指数。
分裂的一个症状是一个表需要更多的空间”应该”接受。究竟有多少,是很难确定的。所有InnoDB
数据和索引存储在b树,他们的填充因数可能从50%到100%不等。分裂的另一个症状是这样的表扫描比花更多的时间”应该”花:
SELECT COUNT(*)从tnon_indexed_column< > 12345;
前面的查询需要MySQL执行全表扫描,大桌子最慢的查询类型。
加快索引扫描,可以定期执行”零”ALTER TABLE
操作,这将导致MySQL重建表:
ALTER TABLEtbl_name引擎= INNODB
您还可以使用ALTER TABLE
执行”零”重建表的alter操作。tbl_name
力
这两个ALTER TABLE
和tbl_name
引擎= INNODBALTER TABLE
使用在线DDL。有关更多信息,请参见14.13节,“InnoDB和在线DDL”。tbl_name
力
执行碎片整理操作的另一种方法是使用,mysqldump表转储到一个文本文件,删除表,从转储文件并重新加载它。
如果插入到一个索引总是提升和记录删除只从最后,InnoDB
文件空间管理算法保证碎片索引中不发生。