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
  • 相关阅读:
    详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
    IDEA链接数据库自动生成实体类
    urllib的高级用法
    django项目部署上线
    Git 远程仓库(Github)
    git 标签
    git分支管理
    Git 工作区、暂存区和版本库
    git介绍及安装
    Python3-笔记-numpy学习指南-002-基础
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13141909.html
Copyright © 2011-2022 走看看