索引创建优化:
fast index creation
mysql5.5之前不包括5.5,创建索引或修改删除这类的ddl操作过程为:
1、首先创建一张新的临时表,表结构为通过alter table 新定义的结构
2、然后把原表中的数据导入到临时表中
3、接着删除原表
4、最后把临时表重命名为原来的表名
innodb 存储引擎从1.0.x开始支持fast index creation(快速索引创建)-简称:FIC
对于辅助索引的创建,innodb存储引擎会对创建索引的表加上一个S锁,在创建过程中,不需要重建表,速度快了很多,删除辅助索引也会快很多,
存在的问题:
(1)在创建过程中只能对该表进行读操作,若有大量的事物需要对目标表进行写操作,数据库服务器不可用。
(2)FIC方式只限于辅助索引,对于主键的创建与删除同样需要重建一张表
online ddl
虽然FIC可以让innodb存储引擎避免创建临时表,从而提高了索引的创建效率,但是会阻塞DDL操作,从mysql5.6开始支持了online DDL(在线数据定义)操作,
其允许辅助索引创建的同时,还允许其他诸如insert,update,delete这类的DDL操作,此外一下这几类DDL操作都可以通过“在线”的方式进行操作:
(1)辅助索引的创建与删除
(2)改变自增长值
(3)添加删除外键约束
(4)列的重命名
转载于:https://my.oschina.net/u/1169079/blog/365003