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

说说MySQL5.7和MySQL8.0的在线DDL

Tonyhacks 2023-08-31
81

MySQL 5.7和MySQL 8.0都支持在线DDL,可以在表上执行DDL操作(如ALTER TABLE)而不阻塞对表的并发读取和写入。这是通过使用在线算法(INPLACE或COPY)来实现的。

然而,MySQL 8.0与MySQL 5.7相比,对在线DDL进行了一些改进和增强。

  1. MySQL 8.0对在线DDL的操作更加安全。例如,如果服务器在ALTER TABLE操作过程中崩溃,那么MySQL 8.0将恢复到操作开始时的稳定状态,而不是中间状态。

  2. MySQL 8.0引入了Instant Add Column功能,即使对大型表也能立即添加列。然而,MySQL 5.7在添加列时需要重建整个表,这可能会花费很长时间。

  3. MySQL 8.0支持更多的在线DDL操作,包括重新定义列顺序,添加、删除、重定义列的默认值等。

  4. 在MySQL 8.0中,所有的DDL操作都是原子的,这意味着每个DDL操作都被视为一个单一的,不可分割的操作,要么完全成功,要么完全失败。这与MySQL 5.7有所不同,后者只对某些DDL操作提供原子性。

  5. MySQL 8.0在执行ALTER TABLE操作时,可以显示进度报告,这使得DBA可以更容易地监视这些操作。

功能 MySQL 5.7 MySQL 8.0
在线DDL 支持 支持
DDL操作的安全性 较低,服务器崩溃可能导致不稳定状态 较高,服务器崩溃会恢复到操作开始时的稳定状态
添加列的速度 慢,需要重建整个表 快,即使对大型表也能立即添加列
支持的在线DDL操作 较少,例如,不支持重新定义列顺序 更多,例如,支持重新定义列顺序,添加、删除、重定义列的默认值等
DDL操作的原子性 部分支持 全部支持
ALTER TABLE操作的进度报告 不支持 支持

总的来说,MySQL 8.0在在线DDL方面提供了更高的性能,更大的灵活性和更好的管理工具,以满足今天的应用程序对数据库的需求。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论