• mysql 原理 ~ DDL之在线DDL


    一 简介:今天来DDL的变革
    二 DDL演化方式:
      1 copy table : 1 创建临时表2 copy数据到临时表 3 rename进行交换 缺点 1 阻塞事务 2占用磁盘空间
      2 inplace : 1 在线更改表,不会拷贝临时表 缺点 1 阻塞事务
      3 online_ddl :1 在线更改表,不会拷贝临时表 优点 1 不会阻塞事务
      因此MySQL最新版本中,InnoDB支持了所谓的Online方式DDL。与以上两种方式相比,online方式支持DDL时不仅可以读,还可以写,对于dba来说,这是一个非常棒的改进。
    三 DDL 耗时排行
      1 针对 索引的DDL操作
        特点:耗时少,表的数据量大,也不会很长时间,(随着表数据量的增多,加索引的速度会变得越来越慢)
        在线变更: 支持->inplace方式->不会阻塞事务
        特殊情况:针对全文索引要特殊对待
     2 针对 列的DDL操作(不包含主键) 
        特点:耗时长,表的数据量大,时间会非常长
        在线变更: 支持
        add column->inplace 方式->不会阻塞事务, 时间可能很长

       delete column -> inplace 方式->不会阻塞事务, 时间可能很长
        change->copy 方式->会阻塞事务 , 时间可能很长
        设置 修改 column默认值->inplace 方式 ->不会阻塞事务,时间很快,直接修改frm文件
        设置 colunm not null/null->inplace 方式->不会阻塞事务,时间可能很长

        设置clounm current on update -> inplace 方式->不会阻塞事务,时间很短
        drop column ->inplace 方式 ->不会阻塞事务,时间可能很长

      3 针对主键的DDL操作
       特点:耗时长,只针对特定场景进行操作
       在线变更: 支持
       add primary->inplace 方式->不会阻塞事务,时间可能很长
       drop primary->copy 方式->会阻塞事务,时间可能很长
       删除并添加主键->inplace 方式->不会阻塞事务,时间可能很长,而且必须在同一alter语句上
     4 其他特殊操作
      1 更改表的字符集 方式->copy,会阻塞事务,时间可能很长
       2 整理表空间 方式->inplace,不会阻塞事务(alter table engine=innodb)
    四 总结
    1 对于针对主键和列的更改操作建议采用pt-osc操作

    2 针对myisam的表操作

     1 都需要copy to tmp table 这点要尤为注意,上面分析的都是innodb的操作

     2 由于myisam也支持触发器,所以可以用pt-osc进行操作

  • 相关阅读:
    【笔记】【dp模型】
    【刷题】【dp】【背包】金明的预算
    建模结束了——5.3
    HDU
    洛谷 P2734 [USACO3.3]游戏 A Game
    洛谷 P4095 [HEOI2013]Eden 的新背包问题
    洛谷 P1156 垃圾陷阱
    洛谷 P1833 樱花
    洛谷 P3966 [TJOI2013]单词
    洛谷 P5357 【模板】AC自动机(二次加强版)
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/10109047.html
Copyright © 2020-2023  润新知