Mysql中INSTANT使用
在业务中因为业务表数据量过大,我们的项目一直用的是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使用相关推荐
- mysql数据库语句分类_细数MySQL中SQL语句的分类
1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP DATABASE):2:创建.修改.重命名.删除表(C ...
- MySQL中DELETE操作磁盘空间不会减少的原因
MySQL中delete操作 在InnoDB中,delete操作并不会真的删除数据,mysql实际上只是给要删除的数据打了标记,标记为删除.磁盘所占空间不会变小,即表空间并没有真正被释放. 这样设计的 ...
- Java如何给Mysql中插入year类型数据
文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...
- 浅谈MySQL中utf8和utf8mb4的区别
一.什么是UTF8MB4? 我们在使用PhpMyAdmin管理面板时,可以在首页看到名为"Server connection collation"(服务器连接排序规则)的选项,用来 ...
- 把mysql 中的字符gb2312 改为gbk的方法
第一步:查找mysql的字符: mysql> show variables like '%char%'; +--------------------------+---------------- ...
- mysql中change用法,mysql 中alter的用法以及一些步骤
mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...
- mysql中的宽字符注入_深入理解Mysql宽字符注入
之前记录过一篇 写的不够详细 概念 宽字节是相对于ascII这样单字节而言的:像GB2312.GBK.GB18030.BIG5.Shift_JIS等这些都是常说的宽字节,实际上只有两字节 GBK是一种 ...
- 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 官方教程: ...
- mysql information schema_[MySql技术]MySQL中information_schema是什么
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_schema数据库是做什么用的呢,使用WordPress博客 ...
最新文章
- 零起点学算法02——输出简单的句子
- opentracing
- python详细教程-python入门(非常详细的教程)
- 自学ng2 -生命周期钩子
- 永磁同步电机三相等效电路图_基于MTPA的永磁同步电动机矢量控制系统分解
- zabbix邮件发不出去
- 【qduoj】C语言课程设计_约瑟夫问题
- 一張表的數據導入到另一張表
- PNG无损压缩工具Optipng【备忘】
- matlab俄罗斯方块说明,俄罗斯方块MATLAB版的代码
- 计算机程序考试试题及答案,计算机程序员考试试题及答案.doc
- 前端花瓣飘落特效代码
- iOS和安卓的base64
- 希尔顿集团旗下品牌希尔顿启缤精选酒店在河北廊坊正式开业
- 猜数字(超级简单题目)
- Android 视频 美颜SDK对比
- redis缓存失效时间设为多少_Redis缓存过期失效机制
- 二叉树:后序遍历非递归算法
- 光纤信号衰减的原理及分析
- matlab中的rand函数(用于产生随机数)