会有影响,具体如下:
影响程度:
锁表风险 - ALTER TABLE 会锁定整个表,期间无法读写
时间较长 - 大表建索引可能需要几分钟到几小时
IO压力 - 建索引会产生大量磁盘IO
影响业务 - 期间所有对该表的操作都会被阻塞
建议方案:
方案1:在线DDL(推荐)
-- MySQL 5.6+ 支持在线添加索引
ALTER TABLE t_device_event
ADD INDEX idx_gmt_create (gmt_create)
ALGORITHM=INPLACE, LOCK=NONE;
方案2:业务低峰期操作
选择凌晨2-4点等业务低峰时段
提前通知相关业务方
方案3:主从切换
先在从库添加索引
主从切换
在新从库(原主库)添加索引
监控建议:
-- 查看进度
SHOW PROCESSLIST;
-- 查看表状态
SHOW TABLE STATUS LIKE 't_device_event';
最安全的是使用方案1的在线DDL方式。