zoukankan      html  css  js  c++  java
  • MySQL生产中上亿数据大表怎么在线增加一个字段并设定默认值?

    MySQL生产中上亿数据大表怎么在线增加一个字段并设定默认值?
    
    
    一、MySQL8.0版本
    如果满足以下条件:
        1、不是压缩表
        2、不是data dictionary tablespace
        3、不是全文索引表
        4、不是临时表
        5、新增列在最后位置
    满足以上条件,可以通过instant方式完成快速加列,即修改metadata信息,代价非常小,秒级完成。
    
    
    二、MySQL5.6、MySQL5.7
        1、可以这么说,虽然支持inplace(不阻塞同时在跑的DML),但还需要rebuild表,代价可能较大并且耗时可能会非常长,也会造成非常严重的主从延迟。
        2、因此生产环境还是推荐使用pt-osc/gh-ost等第三方工具进行在线加列。
        3、需要注意的是pt-osc会建触发器,如果原先表上本身就有触发器就不能使用了。
        4、另外需要注意的是通过第三方工具加列时需要考虑到空间占用问题(影子表及加列过程中产生的binlog)。
        5、第三方工具加列同样可能造成主从延迟,因此注意控制速率。
    
    详细ONLINE DDL见:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html
  • 相关阅读:
    LPR之我见
    安装tensorflow2.2cpu的简洁方法
    anaconda安装keras
    redis 查看当前连接数
    2020 8 14
    docker安装jenkins
    使用docker安装gitlab
    提问:游戏测试与一般的软件测试的区别在哪里?
    “战斗天使”- 测试媛是如何崛起的?
    关系型数据库的几种常用主键
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13141909.html
Copyright © 2011-2022 走看看