暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 8.0 给表加字段的注意事项

504


  1. mysql 8.0版本增加字段,利用的online ddl算法是什么?
  • mysql 8.0.12版本开始支持 Instant online ddl, 在那之前 增加字段使用的是Inplace算法,更早的版本是使用的COPY算法。

  1. Instant算法相对于Inplace和copy有什么优势?
  • Instant算法,只需要修改数据字典的元数据,无需拷贝数据也不需要rebuild table,同时过程中不需要加MDL写锁,也不会阻塞DML。整个ddl可以瞬间完成。

  1. 增加字段能够用到Instant算法有哪些限制条件?
  • 增加字段的语句不能和其他不支持instant算法的动作一起使用,比如add column不能和add index、drop index写到一个alter 语句中。
  • 在8.0.29版本之前,Instant算法只支持增加字段到表的最后一列。增加字段如果没有加after\First关键字,会默认加到表的最后一列,所以我们在执行add column语句时,最好不要加after\First关键字。

  • 带有全文索引的表不支持使用Instant或Inplace算法添加字段,只能使用Copy算法, 也就是说给带有索引的表增加字段会阻塞DML。

alter table `booking_order` add column name varchar(20),algorithm = Instant
ALGORITHM=INSTANT is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY/INPLACE.

  • 表的row_format=COMPRESSED,不支持使用Instant增加字段,但支持Inplace。


  1. 是否可以在一个alter语句里使用instant增加多个字段?
  • 可以。
ALTER TABLE t1 ADD COLUMN c2 INT, ADD COLUMN c3 INT, ALGORITHM=INSTANT;


参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html#online-ddl-column-operations
https://blog.csdn.net/qq_26664043/article/details/132067933

点个“赞 or 在看” 你最好看!

喜欢,就关注我吧!


👇👇👇 谢谢各位老板啦!!!

文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论