• mysql online ddl


    背景:业务高峰期,在线操作ddl,比如订单表增加字段

    担心:锁表,造成业务阻塞

    期望:寻求一种解决方案,ddl不影响dml

    调研:搜索 :mysql 增加字段如何不锁表

             https://www.zhihu.com/question/26457943-》https://c4ys.com/archives/1943-》https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html

             搜索:MDLS 是什么-》https://segmentfault.com/a/1190000021212804

             搜索:mysql ddl 不锁表 算法含义 -》http://georgema.xyz/2020/11/18/online-ddl/

    MDL 锁是在 Server 层加的之外,其它三种都是在 InnoDB 层加的。具体的加锁逻辑不在此进行展开,但是需要明确一点:所有的操作(不管是 DDL 还是 DML 还是查询语句)都需要先拿 Server 层的 MDL 锁,然后再去拿 InnoDB 层的某个需要的锁。一个 DDL 的基本过程是这样的:

    1. 首选,在开始进行 DDL 时,需要拿到对应表的 MDL X 锁,然后进行一系列的准备工作;(需要等待慢查询和写事务)
    2. 然后将 MDL X 锁降级为 MDL S 锁,进行真正的 DDL 操作;(阻塞写事务作)
    3. 最后再次将 MDL S 锁升级为 MDL X 锁,完成 DDL 操作,释放 MDL 锁;(阻塞所有事务)

    所以在真正执行 DDL 操作期间,确实是不会“锁表”的,但是如果在第一阶段拿 MDL X 锁时无法正常获取,那就可能真的会“锁表了”。

             

  • 相关阅读:
    汉化DevExpress
    《苹果往事》的台式翻译
    说说《程序员》杂志的排版
    关于量化考核绩效
    as3 浅复制 深复制
    斜视角的讨论(转)
    斜角地图原理解释及斜角图形绘制实例细述(转)
    垃圾回收测试
    Flash务实主义(八)——减少数据传输量(转)
    翻译]游戏主循环
  • 原文地址:https://www.cnblogs.com/zhonghuahero/p/14441076.html
Copyright © 2020-2023  润新知