如何安全的大数据量表在线进行DDL操作
本文为博主原创,转载请注明出处
随着业务的需要,工作中需要对生产数据库的一些表做一些DDL操作,由于生产数据库表的数据量都是几千万,
而且生产数据库的表还在不断的进行新增和查询操作。应用中需要对生产数据库的表添加一个字段,由于考虑到数据量
大,而且表数据还在不断新增,以及进行查询等操作,为了不影响业务和数据,需要考虑在生产数据表添加字段时,不影响
正常业务,即不锁表也尽量减少性能的影响,所以通过不断查找,了解到使用以下的方式可以达到上面的效果,
ALGORITHM=INPLACE, LOCK=NONE;
来解释下:
Algorithm=Inplace :可避免表拷贝导致的实例性能问题(空间、I/O问题),建议在 DDL 中包含该选项。
如果 DDL 操作不支持 Algorithm=Inplace 方式,DDL 操作会立刻返回错误。
Lock=None :为了在 DDL 操作过程中不影响业务的 DML 操作,建议在 DDL 中包含该选项。
如果 DDL 操作不支持 Lock=None (允许并行 DML 操作)选项,DDL 操作会立刻返回错误。
默认情况下 MySQL 会尽量使用 algorithm=inplace , lock=none 来进行 DDL 操作。因此默认可以不指定这两个选项。
为了保障期间,还是在ddl中加上了上面的两个配置,一张两千万的表加一个字段执行了8分钟,正常新增。
SQL语句如下:
ALTER TABLE `fucdn_customer_domain_flow12` ADD COLUMN `total` int(11) NOT NULL COMMENT '请求数', ALGORITHM=INPLACE, LOCK=NONE;
2020.01.07--后续补充
昨晚系统上线发布,需要执行sql脚本,但刚点击sql脚本执行的时候,就返回下列错误:

当时就很惊讶,为什么一个alter table 增加字段的的sql执行会报一个主键冲突的异常,立马惊起一身冷汗。找到当晚mysql数据库值班的同事,
请教了一下,他一看便说这是 mysql版本为5.7中 alter table 的bug,他说我执行的sql需要加上 algorithm=copy 这个参数,当我具体请教这个是什么原因或
什么场景会导致异常时,大佬也是不能具体形容,只是说是mysql的bug,需要对sql加一个algorithm=copy 的保护就可以解决问题。后来再网上查询,看到一篇很好的文章
在此记录:
MySQL Online DDL的改进与应用(https://www.cnblogs.com/xinysu/p/6732646.html)
online DDL特性可以使很多ALTER TABLE操作避免表的复制,以及在DDL执行过程中对DML操作的阻塞。
它具有下面的优点:
在繁忙的生产系统中,当你修改索引或字段定义的时候,你可能会让一张表再几分钟内不可用,这个特性提高了数据库的响应速度和高可用性。
如何安全的大数据量表在线进行DDL操作的更多相关文章
- 大数据量表中,增加一个NOT NULL的新列
这次,发布清洗列表功能,需要对数据库进行升级.MailingList表加个IfCleaning字段,所有的t_User*表加个IfCleaned字段. 脚本如下 对所有的t_User表执行 a ...
- (转)SqlServer为大数据量表建索引
本文转载自:http://blog.csdn.net/iangujun/article/details/8136764 之前从没有用SqlServer数据库处理过大数据量的表,都是用Oracle,然后 ...
- sqlserver 大数据量的insert、delete操作优化
http://blog.csdn.net/lanyuzhen/article/details/7547476 --大批量导出orders表:insert DBCC DROPCLEANBUFFERS ...
- java大数据量调优
从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:1.首先需要解决网络带宽和Web请求的高并发,需要合理的加大服务器和带宽的投入,并且需要 ...
- mysql innobackupex xtrabackup 大数据量 备份 还原
大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1, ...
- mysql innobackupex xtrabackup 大数据量 备份 还原(转)
原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推 ...
- 大数据量下的SQL Server数据库自身优化
原文: http://www.d1net.com/bigdata/news/284983.html 1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情 ...
- 任何抛开业务谈大数据量的sql优化都是瞎扯
周三去某在线旅游公司面试.被问到了一个关于数据量大的优化问题.问题是:一个主外键关联表,主表有一百万数据,外键关联表有一千万的数据,要求做一个连接. 本人接触过单表数据量最大的就是将近两亿行历史数据( ...
- 【SQL server初级】数据库性能优化一:数据库自身优化(大数据量)
数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分 数据库性能优化一:数据库自身优化 优化①:增加次数据文件,设置文件自动增长(粗略数据分区) 1.1:增加次数据文 ...
- 大数据量时Mysql的优化
(转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时 ...
随机推荐
- CentOS系统中yum的基本用法
最小化安装系统时,yum可能会因为网卡配置问题,随机启动配置,导致无法使用, 在shell里面输入:yum --help ,结果显示 yum 已经正常安装了!!到底是哪里出了问题呢?经过网友的提示,我 ...
- Shiro-550反序列化漏洞(CVE-2016-4437)复现
本文章使用Shiro_exploit此工具复现,靶机环境为vulhub 项目地址: https://github.com/insightglacier/Shiro_exploit https://gi ...
- 微信小程序实时噪声分贝
为了做一个能够检测实时噪声分贝的小程序,网上找了很多例子,基本没有完整的代码,手写了一个,话不多说直接上效果图 实现实时录音的功能,并且能够根据声音分贝大小转动仪表盘显示实时的分贝,运用echart实 ...
- JQuery中美元符号$
目录 1. 概述 2. 详论 2.1. 加载脚本 2.2. 选择器 2.2.1. 元素选择器 2.2.2. ID选择器 2.2.3. 类选择器 2.3. 引入方法 3. 参考 1. 概述 前端技术得更 ...
- 神经网络入门篇:详解深层网络中的前向传播(Forward propagation in a Deep Network)
深层网络中的前向传播 先说对其中一个训练样本\(x\)如何应用前向传播,之后讨论向量化的版本. 第一层需要计算\({{z}^{[1]}}={{w}^{[1]}}x+{{b}^{[1]}}\),\({{ ...
- 构建万物互联,华为云IoT+鸿蒙重燃物体感知
摘要:鸿蒙的出现,让硬件.软件行业面临着变革与重构的洪流,但激流勇进中,也潜藏着巨大机遇.物联网设备与鸿蒙结合成为必然趋势,本文将解读华为云IoT+鸿蒙如何强强联合,为物联网行业提供新的思路和方法. ...
- 零代码修改,教你Spring Cloud应用轻松接入CSE
摘要:本文介绍了Sermant Agent的接入原理和如何使用Sermant Agent无修改接入CSE. 本文分享自华为云社区<Spring Cloud应用零代码修改接入华为云微服务引擎CSE ...
- 使用MRS CDL实现实时数据同步的极致性能
摘要:MRS CDL旨在实现最大的数据复制吞吐量和低复制延迟. 本文分享自华为云社区<使用MRS CDL实现实时数据同步的极致性能>,作者:大数据修行者 . MRS CDL提供从多个RDB ...
- Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
Unity3D 导出的apk进行混淆加固.保护与优化原理(防止反编译) 目录 前言: 准备资料: 正文: 1:打包一个带有签名的apk 2:对包进行反编译 3:使用ipaguard来对程序进行加固 ...
- xcode打包导出ipa
xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹果 ...