乐趣区

关于mysql: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 只限定于辅助索引,对于主键的创立和删除同样须要重建一张表。

退出移动版