欢迎光临深圳市白事服务网
详情描述

MySQL加索引是否锁表取决于索引类型、存储引擎、MySQL版本和操作方式。以下是详细分析:

一、不同情况的锁表分析

1. 默认情况(MySQL 5.6之前)

ALTER TABLE users ADD INDEX idx_email (email);
  • MySQL 5.5及之前:大部分情况会锁表(COPY算法)
  • 锁表影响:阻塞所有DML操作(INSERT/UPDATE/DELETE)

2. MySQL 5.6+ 在线DDL

ALTER TABLE users ADD INDEX idx_email (email), ALGORITHM=INPLACE, LOCK=NONE;
  • ALGORITHM=INPLACE:原地重建,不复制整表
  • LOCK=NONE:允许并发读写
  • 实际影响:仅在创建索引的最后阶段有短暂的元数据锁

3. 存储引擎差异

  • InnoDB:支持在线DDL(5.6+)
  • MyISAM:总是锁表(不支持在线DDL)

二、索引操作的锁机制

1. 在线创建索引(推荐)

-- MySQL 5.6+ 自动使用在线DDL
ALTER TABLE users ADD INDEX idx_name (name);

-- 显式指定
ALTER TABLE users ADD INDEX idx_name (name),
ALGORITHM=INPLACE,    -- 原地操作
LOCK=NONE;            -- 不锁表

2. 不同算法的锁影响

算法 锁级别 性能影响 磁盘使用
COPY 表级锁 高(阻塞DML) 高(两倍空间)
INPLACE 元数据锁(短暂)
INSTANT (8.0) 元数据锁

三、实际执行建议

1. 检查支持的DDL类型

-- 查看操作是否支持在线
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX;
-- 或使用
SHOW ENGINE INNODB STATUS;

2. 生产环境最佳实践

# 1. 使用pt-online-schema-change(第三方工具)
pt-online-schema-change \
  --alter "ADD INDEX idx_email (email)" \
  D=database,t=users \
  --execute

# 2. 分阶段操作(大表)
-- 先创建无数据的索引
CREATE INDEX idx_partial ON users(email) WHERE id > 1000000;
-- 再逐步更新

3. 规避锁表风险

-- 在低峰期执行
SET SESSION lock_wait_timeout = 300;
SET SESSION innodb_lock_wait_timeout = 300;

-- 使用INSTANT算法(MySQL 8.0+)
ALTER TABLE users 
ADD INDEX idx_email (email),
ALGORITHM=INSTANT;

四、特殊情况会锁表

即使使用在线DDL,以下情况仍可能锁表:

添加全文索引/FULLTEXT 空间索引/SPATIAL 主键索引变更 表有外键约束且需要检查时 字段类型变更+加索引组合操作

五、监控和回滚方案

-- 监控DDL进度(MySQL 5.7+)
SELECT * FROM performance_schema.events_stages_current
WHERE EVENT_NAME LIKE '%stage/innodb/alter%';

-- 设置超时防止长时间锁表
SET SESSION innodb_lock_wait_timeout = 30;
SET SESSION lock_wait_timeout = 30;

总结建议

MySQL 5.6+:默认支持在线加索引,但显式指定ALGORITHM=INPLACE, LOCK=NONE更安全 大表操作:使用pt-online-schema-change或gh-ost MySQL 8.0+:优先使用ALGORITHM=INSTANT 始终先在测试环境验证:使用相同数据量测试 有备份才操作:避免不可逆问题

最佳实践:对大表(>1GB)的索引操作,建议在维护窗口进行,并使用专业工具监控进度和影响。

相关帖子
2026年,小区公共收益的归属权和使用范围在法律上有哪些明确规定?
2026年,小区公共收益的归属权和使用范围在法律上有哪些明确规定?
2026年手机号实名制政策有哪些新变化,对普通用户有什么具体影响?
2026年手机号实名制政策有哪些新变化,对普通用户有什么具体影响?
深圳市殡葬服务一条龙价格-丧葬服务租车,丧事出殡服务
深圳市殡葬服务一条龙价格-丧葬服务租车,丧事出殡服务
深圳市搜索引擎优化@网站建设服务,专业团队
深圳市搜索引擎优化@网站建设服务,专业团队
2026年社保待遇领取资格认证,有哪些更方便的线上新方式可以了解?
2026年社保待遇领取资格认证,有哪些更方便的线上新方式可以了解?
旅行或出差时,如何高效便捷地完成睡前口腔清洁的整套流程?
旅行或出差时,如何高效便捷地完成睡前口腔清洁的整套流程?
赡养老人、子女教育等专项附加扣除,填报时需要准备哪些材料?
赡养老人、子女教育等专项附加扣除,填报时需要准备哪些材料?
现在的
现在的"新中式澡堂"加了茶饮书吧,还是你记忆里那个澡堂子吗?
2026年的智能公交站牌,相比过去提供了哪些更丰富的出行信息服务?
2026年的智能公交站牌,相比过去提供了哪些更丰富的出行信息服务?
净水器滤芯到期未更换反而会造成水质污染是真的吗
净水器滤芯到期未更换反而会造成水质污染是真的吗
房子抵押贷款合同遗失怎么办?补办流程、法律效力与复印件使用范围
房子抵押贷款合同遗失怎么办?补办流程、法律效力与复印件使用范围
红白理事会的工作成效如何衡量,村民的满意度调查通常怎么进行?
红白理事会的工作成效如何衡量,村民的满意度调查通常怎么进行?
补办社保卡需要缴纳工本费吗?具体的费用标准是否有统一规定?
补办社保卡需要缴纳工本费吗?具体的费用标准是否有统一规定?
房产证上的面积存在微小误差,是否属于普遍现象以及合理的误差范围是多少?
房产证上的面积存在微小误差,是否属于普遍现象以及合理的误差范围是多少?
太阳能、风能等可再生能源的发展,对国际石油市场的需求预期有何影响?
太阳能、风能等可再生能源的发展,对国际石油市场的需求预期有何影响?
2026年,是否有更智能、更安全的方式替代传统的纸质信息卡?
2026年,是否有更智能、更安全的方式替代传统的纸质信息卡?
办理房子抵押贷款流程中房子能住吗?抵押期间权益解析
办理房子抵押贷款流程中房子能住吗?抵押期间权益解析
面对墙壁和地面“冒水”的现象,正确的应急处理步骤应该是怎样的?
面对墙壁和地面“冒水”的现象,正确的应急处理步骤应该是怎样的?
2026年,是否有更便捷的官方数字平台可帮助劳动者查询和确认自己的薪酬记录?
2026年,是否有更便捷的官方数字平台可帮助劳动者查询和确认自己的薪酬记录?
2026年“身后一件事”联办服务,是否支持异地远程办理或委托他人代办?
2026年“身后一件事”联办服务,是否支持异地远程办理或委托他人代办?