在业务中因为业务表数据量过大,我们的项目一直用的是flyway跑数据库脚本,一次发布过程中想增加几个字段两个字段,脚本跑了一个小时都没有跑完,发现是用户数据量过大,只能暂停发布,以至于后来将数据库数据导表,新增字段,再导回来才解决发布的,后来也一直再查资料,发现了mysql的一个INSTANT算法,解决了数据量过大,新增数据库属性锁表时间过长的问题,以此记录。

文档地址 : 文档地址

在每次迭代计划中需要在MySql的Table中增加一些业务属性,但随着表中数据越来越多,使用传统的INPLACE模式会导致锁表时间过长,且风险不可评估。显然这种方式投入生产环境使用会是致命的缺陷。所以我们需要一种解决方案:能在线DDL,快速增加列(秒级别的),并不会造成业务抖动。

适用位置:

在线DDL快速增加列(秒级别的),并不会造成业务抖动。该功能自 MySQL 8.0.12 版本引入,是由腾讯游戏DBA团队贡献。注意一下,此功能只适用于 InnoDB 表。实际上MySQL 5.7就已支持 Online DDL,虽说大部分 DDL 不影响对表DML操作,但是依然会消耗非常多的时间,且占用额外的磁盘空间,并会造成主从延迟,或者影响表的查询速度。有了这个ALGORITHM=INSTANT 就可应对瞬息万变的需求了。。ALGORITHM=INSTANT 目前对6种ddl有效:Adding a column. This feature is referred to as Instant Add Column . 添加列
Adding or dropping a virtual column. 添加或删除virtual 列
Adding or dropping a column default value. 添加或删除列默认值
Modifying the definition of an ENUM. 修改 ENUM 定义
Changing the index type. 修改索引类型
Renaming a table. 重命名表

旧算法: algorithm=INPLACE;

新算法: algorithm=INSTANT;

使用方式:直接在sql后面追加即可

Mysql中INSTANT使用相关推荐

  1. mysql数据库语句分类_细数MySQL中SQL语句的分类

    1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP  DATABASE):2:创建.修改.重命名.删除表(C ...

  2. MySQL中DELETE操作磁盘空间不会减少的原因

    MySQL中delete操作 在InnoDB中,delete操作并不会真的删除数据,mysql实际上只是给要删除的数据打了标记,标记为删除.磁盘所占空间不会变小,即表空间并没有真正被释放. 这样设计的 ...

  3. Java如何给Mysql中插入year类型数据

    文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...

  4. 浅谈MySQL中utf8和utf8mb4的区别

    一.什么是UTF8MB4? 我们在使用PhpMyAdmin管理面板时,可以在首页看到名为"Server connection collation"(服务器连接排序规则)的选项,用来 ...

  5. 把mysql 中的字符gb2312 改为gbk的方法

    第一步:查找mysql的字符: mysql> show variables like '%char%'; +--------------------------+---------------- ...

  6. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  7. mysql中的宽字符注入_深入理解Mysql宽字符注入

    之前记录过一篇 写的不够详细 概念 宽字节是相对于ascII这样单字节而言的:像GB2312.GBK.GB18030.BIG5.Shift_JIS等这些都是常说的宽字节,实际上只有两字节 GBK是一种 ...

  8. asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...

    [ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型 0 2018-06-30 07:00:08 官方教程: ...

  9. mysql information schema_[MySql技术]MySQL中information_schema是什么

    大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_schema数据库是做什么用的呢,使用WordPress博客 ...

最新文章

  1. 零起点学算法02——输出简单的句子
  2. opentracing
  3. python详细教程-python入门(非常详细的教程)
  4. 自学ng2 -生命周期钩子
  5. 永磁同步电机三相等效电路图_基于MTPA的永磁同步电动机矢量控制系统分解
  6. zabbix邮件发不出去
  7. 【qduoj】C语言课程设计_约瑟夫问题
  8. 一張表的數據導入到另一張表
  9. PNG无损压缩工具Optipng【备忘】
  10. matlab俄罗斯方块说明,俄罗斯方块MATLAB版的代码
  11. 计算机程序考试试题及答案,计算机程序员考试试题及答案.doc
  12. 前端花瓣飘落特效代码
  13. iOS和安卓的base64
  14. 希尔顿集团旗下品牌希尔顿启缤精选酒店在河北廊坊正式开业
  15. 猜数字(超级简单题目)
  16. Android 视频 美颜SDK对比
  17. redis缓存失效时间设为多少_Redis缓存过期失效机制
  18. 二叉树:后序遍历非递归算法
  19. 光纤信号衰减的原理及分析
  20. matlab中的rand函数(用于产生随机数)

热门文章

  1. 基于直方图的图像增强算法(HE、CLAHE)之(二)
  2. 【Web】HTML 账号注册页面
  3. 数学和算法之---排列组合
  4. 重装系统 win10 原生最纯净的
  5. Annotation定义
  6. tableau各种精典示例经验总结01
  7. 如何用计算机玩扫雷,扫雷怎么玩_玩好扫雷游戏的技巧是什么【图文】-太平洋电脑网PConline-太平洋电脑网...
  8. codeforces 1326 E.Bombs
  9. 58同城android客户端手机号码解密方法
  10. JBOX(jboxsjtueducn)