背景

线上5700w,32G数据大表需添加创建字段索引

执行SQL

alter table
  `usr_user_login_record`
add
  index `idx_create_time_device` (`create_time`, `operating_system`),
  ALGORITHM = INPLACE,
  LOCK = none;

耗时

5461.499 s ~ 1.5h

机器性能

Azure云 / 2 vCore / 8 GiB内存 / 3200 最大iops / 4 G Buffer Pool

监控情况

数据库

CPU使用率 9% -> 27%

IO升高 4% -> 14%

其他

从库同步时延上升,从主库完成索引添加后开始。原因为主库完成索引创建后才会写入BinLog,且从库回放线程单线程执行DDL(复制的事务顺序强一致性约束),阻塞后续DML语句执行,并非引擎不支持Online DDL。从库BinLog复制回放调度DDL排他。

业务

  • 主库相关业务RT无影响

  • 从库被影响(业务查询可用,主从同步阻塞)