InnoDB创建索引之Fast Index Creation

MySQL5.5(不含5.5)添加或删除索引的效率很低下,具体过程如下:

  1. 首先创建一张新的临时表,表结构为通过命令alter table新定义的结构。
  2. 然后把原表中数据导入到临时表。
  3. 接着删除原表。
  4. 最后将临时表重命名为原来的表。

如果表大的话,这相过程是相当长的。
InnoDB从1.0.x版本后使用Fast Index Creation(快速索引创建)的方式,简称FIC,具体如下,
创建索引:对创建索引的表加一个S锁,不会重建表。因为是S锁所以不会影响读(但会阻塞写)。
删除索引:只需要更新内部实图,将辅助索引的空间标记为可用,同时删除数据库内部视图上对该表的索引定义。

需要说明下,FIC只限定于辅助索引,对于主键的创建和删除同样需要重建一张表。

你可能感兴趣的:(mysql)