Mysql 大表在线DDL修改表全文索引解决方式
1.添加主键索引
ALTER TABLE table_name
ADD PRIMARY KEY (column
) ,Algorithm=Inplace ;
2.添加唯一索引
ALTER TABLE table_name
ADD UNIQUE (column
) ,Algorithm=Inplace ;
3.添加全文索引
ALTER TABLE table_name
ADD FULLTEXT (column
),Algorithm=Inplace ;
4.添加普通索引
ALTER TABLE table_name
ADD KEY table_cloum
(table_cloum
) USING BTREE,Algorithm=Inplace ;
5.添加组合索引
ALTER TABLE table_name
ADD INDEX index_name (column1
, column2
, column3
),Algorithm=Inplace ;
在线DDL修改生产环境的大表一直是运维、DBA一个很头痛的问题
客户群里面反馈系统无法做写跟进了,于是赶紧排查数据库是不是出现锁表现象了
经查询果然是alter在新增全文索引的时候长时间不释放,导致出现大量的DML锁,最后kill掉这个进程恢复业务,
然后在阿里云的帮助上找到了一个解决方法
- In-Place?:对应 DDL语句的 Algorithm 选项,通过 inplace 方式执行 DDL。相比表拷贝方式,可以减少空间和 I/O 消耗。
- Copies Table?:对应 DDL语句的 Algorithm 选项,通过 表拷贝 方式执行 DDL。DDL 执行期间会占用更大的磁盘空间和消耗更多的 I/O。
- 允许并发 DML?:对应 DDL语句的 Lock 选项,DDL 执行期间是否支持并发 DML 操作。
- 允许并发查询?:DDL 语句执行期间是否支持并发查询操作(通常都是支持的)。
- MySQL官方文档请参考: Online DDL 概览
- DDL 操作执行时需要修改表的元数据(metadata),有可能会遇到等待表元数据锁的情况(waiting for table metadata lock),该情况的处理方式请参考: RDS MySQL 表上 Metadata lock 的产生和处理
- Inplace 和 Copy Table 是相反的 2 种处理方式;但即使 DDL 支持 Inplace 选项,某些操作在整个执行过程中也会部分涉及到表拷贝,比如上表中的添加列操作。
2. Online DDL 建议的选项
- Algorithm=Inplace :为了避免表拷贝导致的实例性能问题(空间、I/O问题),建议在 DDL 中包含该选项。如果 DDL 操作不支持 Algorithm=Inplace 方式,DDL 操作会立刻返回错误。
- 修改字段数据类型不支持 algorithm=inplace 选项
alter table area_bak algorithm=inplace, modify father text;1.2.
- Lock=None :为了在 DDL 操作过程中不影响业务的 DML 操作,建议在 DDL 中包含该选项。如果 DDL 操作不支持 Lock=None (允许并行 DML 操作)选项,DDL 操作会立刻返回错误。
-- 转换字符集不支持并发 DML 操作
alter table area ALGORITHM=copy, lock=none,CONVERT TO CHARACTER SET utf8mb4;1.2.
默认情况下 MySQL 会尽量使用 algorithm=inplace , lock=none 来进行 DDL 操作。因此默认可以不指定这两个选项。
对不支持 Online DDL 的操作(比如RDS for MySQL 5.5),可以考虑通过 Percona 的 Schema Online Change 工具来操作,请参考: RDS for MySQL 如何使用 Percona Toolkit
一个1000万条数据新增一个索引 大概需要20分钟左右
转载至: 阿里云RDS帮助
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了