当前位置: 首页 > news >正文

MySQL非阻塞创建索引的方法

文章目录

    • 1. Online DDL (MySQL 5.6+)
    • 2. pt-online-schema-change 工具
    • 3. gh-ost 工具
    • 4. 对于MySQL 8.0+
    • 注意事项


在MySQL中创建大型表索引时,传统方式会阻塞表的写操作,影响生产环境使用。以下是几种非阻塞创建索引的方法:

1. Online DDL (MySQL 5.6+)

从MySQL 5.6开始,InnoDB支持在线DDL操作:

ALTER TABLE table_name ADD INDEX index_name (column_name), ALGORITHM=INPLACE, LOCK=NONE;
  • ALGORITHM=INPLACE:使用就地算法,避免表复制
  • LOCK=NONE:不获取锁,允许并发DML操作

2. pt-online-schema-change 工具

Percona提供的工具,通过创建影子表实现:

pt-online-schema-change --alter "ADD INDEX idx_name (column)" D=database,t=table --execute

3. gh-ost 工具

GitHub开源的在线模式变更工具:

gh-ost \
--database="database" \
--table="table" \
--alter="ADD INDEX idx_name (column)" \
--execute

4. 对于MySQL 8.0+

MySQL 8.0增强了在线DDL功能,默认情况下许多索引操作已经是非阻塞的:

ALTER TABLE table_name ADD INDEX index_name (column_name);

注意事项

  1. 在线DDL操作会消耗更多资源且执行时间更长
  2. 某些操作仍需要短暂的元数据锁(如添加全文索引)
  3. 空间需求:在线操作通常需要额外的临时空间
  4. 主键操作通常无法完全在线执行

对于大型生产表,建议在低峰期执行,并使用工具监控进度和影响。

http://www.dtcms.com/a/264061.html

相关文章:

  • golang generic 2022-04-13
  • Linux 系统重启 reboot与重置reset深度解析
  • 【读代码】百度开源大模型:ERNIE项目解析
  • 软件测试复习之单元测试
  • C#系统学习第六章——循环语句
  • 【PDF-XSS攻击】springboot项目-上传文件-解决PDF文件XSS攻击
  • 创始人IP商业闭环构建:从定位到二次转化的全流程|创客匠人
  • 【文件解析】json.load(fp)
  • 数据结构——单链表反转、相邻节点最大值、有序链表合并
  • 【javaAI】SpringAI快速入门
  • Kafka日常运维命令总结
  • 第4课:Flask请求与响应对象深度解析
  • 【Python】Flask网页
  • React Native 0.79.4 中 [RCTView setColor:] 崩溃问题完整解决方案
  • JavaEE初阶第六期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(四)
  • 无法将“pytest”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  • NLP——RNN变体LSTM和GRU
  • 【Linux】进程
  • ELK日志分析系统(filebeat+logstash+elasticsearch+kibana)
  • Pycharm安装第三方库
  • 【实战】 容器中Spring boot项目 Graphics2D 画图中文乱码解决方案
  • 脑机新手指南(二十一)基于 Brainstorm 的 MEG/EEG 数据分析(上篇)
  • ChatGPT + GitHub Copilot + Cursor 实战提升编程效率
  • Oracle 常用函数
  • WPF中Style和Template异同
  • 【CodeTop】每日练习 2025.7.1
  • 使用 Conda 工具链创建 Poetry 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》
  • 迅为高情性6TOPS算力的RK3576开发板NPU rknn-model-zoo例程演示
  • Windows VMWare Centos Docker部署Springboot + mybatis + MySql应用
  • Windows版minio下载安装使用教程