暂无图片
MySQL Online DDL
最近更新:2023-07-03 10:13:15

概念描述

MySQL online ddl是MySQL 5.6及以后版本引入的一项特性,它可以让用户在修改表结构的同时,不阻塞对表数据的查询和更新操作。这样可以提高数据库的可用性和吞吐量,尤其是在繁忙的生产环境中,减少DDL操作对业务的影响。 Online ddl是指在修改表结构的同时,不阻塞对表数据的查询和更新操作的特性。它可以提高数据库的可用性和性能,减少DDL操作对业务的影响。

MySQL online ddl的执行过程大致分为三个阶段:初始化、执行、提交

  • 在初始化阶段: 服务器会根据存储引擎能力、语句中指定的操作以及用户指定的ALGORITHM 和 LOCK选项,确定操作期间允许的并发数,并获取MDL写锁。

  • 在执行阶段: 服务器会根据操作类型,选择是否需要重建表或复制数据,并降低MDL写锁为MDL读锁,允许其他会话对表进行查询或更新操作。同时,服务器会记录DDL操作期间产生的数据变更日志(row-log),并在最后应用到新表上。

  • 在提交阶段: 服务器会升级MDL读锁为MDL写锁,并用新的表定义替换旧的表定义,完成DDL操作

MySQL online ddl 算法有三种模式:copy、inplace 和 instant。

......