主题
面试速答(先看这里)
**一句话结论:**但是,虽然支持了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,一般来说是不会锁表了。
但是,虽然支持了Online DDL也不建议在业务高峰期做变更。因为Online DDL是尽最大可能保证DDL期间不阻塞DML动作。但是需要注意,这里说的尽最大可能意味着不是所有DDL语句都会使用OnlineDDL加速。
资源争抢:而且,**Online DDL 在执行过程中会占用系统资源,如 CPU、内存和 I/O。**这可能会对数据库的性能产生一定影响,尤其是在数据量较大的情况下。在非高峰期执行 DDL 变更可以减少对业务操作的干扰,避免高峰期因为资源争用而影响系统性能。
也可能会锁表:虽然 Online DDL 尽可能得减少了锁表的时间,**但在某些复杂操作(如涉及索引重建、大量数据的表结构更改)中,可能仍会有短暂的锁表情况。**所以在非高峰期进行变更,可以降低长时间锁等待对用户请求的影响。
主从延迟:在主从复制的数据库架构中,DDL 操作需要同步到从库。**如果高峰期有大量写入操作,DDL 操作可能会增加主从同步延迟。**