Skip to content

面试速答(先看这里)

**一句话结论:**但是,虽然支持了Online DDL也不建议在业务高峰期做变更。

60秒标准回答:

看版本,在MySQL 5.6版本中,已经支持了Online DDL, 一般来说 是不会锁表了

但是,虽然支持了Online DDL也不建议在业务高峰期做变更。因为Online DDL是 尽最大可能 保证DDL期间不阻塞DML动作。但是需要注意,这里说的 尽最大可能 意味着不是所有DDL语句都会使用OnlineDDL加速

资源争抢 :而且, Online DDL 在执行过程中会占用系统资源,如 CPU、内存和 I/O。 这可能会对数据库的性能产生一定影响,尤其是在数据量较大的情况下。在非高峰期执行 DDL 变更可以减少对业务操作的干扰,避免高峰期因为资源争用而影响系统性能

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**看版本,在MySQL 5.6版本中,已经支持了Online DDL, 一般来说 是不会锁表了。
  • **要点2:**资源争抢 :而且, Online DDL 在执行过程中会占用系统资源,如 CPU、内存和 I/O。
  • **要点3:**也可能会锁表 :虽然 Online DDL 尽可能得减少了锁表的时间, 但在某些复杂操作(如涉及索引重建、大量数据的表结构更改)中,可能仍会有短暂的锁表情况。
  • **要点4:**主从延迟 :在主从复制的数据库架构中,DDL 操作需要同步到从库。

**记忆锚点:**DDL → Online → MySQL → OnlineDDL → 尽可能得减少了锁 → 大量数据的表结构

关键取舍:

  • 资源争抢 :而且, Online DDL 在执行过程中会占用系统资源,如 CPU、内存和 I/O。
  • 这可能会对数据库的性能产生一定影响,尤其是在数据量较大的情况下。
  • 在非高峰期执行 DDL 变更可以减少对业务操作的干扰,避免高峰期因为资源争用而影响系统性能。

易错提醒:

  • 但是,虽然支持了Online DDL也不建议在业务高峰期做变更。
  • 但是需要注意,这里说的 尽最大可能 意味着不是所有DDL语句都会使用OnlineDDL加速。

加分表达:

  • 如果高峰期有大量写入操作,DDL 操作可能会增加主从同步延迟。

追问准备:

  • 围绕「DDL」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Online」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「MySQL」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

看版本,在MySQL 5.6版本中,已经支持了Online DDL,一般来说是不会锁表了。

📄 ✅什么是OnlineDDL

打开文档:✅什么是OnlineDDL

但是,虽然支持了Online DDL也不建议在业务高峰期做变更。因为Online DDL是尽最大可能保证DDL期间不阻塞DML动作。但是需要注意,这里说的尽最大可能意味着不是所有DDL语句都会使用OnlineDDL加速。

资源争抢:而且,**Online DDL 在执行过程中会占用系统资源,如 CPU、内存和 I/O。**这可能会对数据库的性能产生一定影响,尤其是在数据量较大的情况下。在非高峰期执行 DDL 变更可以减少对业务操作的干扰,避免高峰期因为资源争用而影响系统性能。

也可能会锁表:虽然 Online DDL 尽可能得减少了锁表的时间,**但在某些复杂操作(如涉及索引重建、大量数据的表结构更改)中,可能仍会有短暂的锁表情况。**所以在非高峰期进行变更,可以降低长时间锁等待对用户请求的影响。

主从延迟:在主从复制的数据库架构中,DDL 操作需要同步到从库。**如果高峰期有大量写入操作,DDL 操作可能会增加主从同步延迟。**​