如何安全的大数据量表在线进行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的出现暂时 ...
随机推荐
- 牛客小白月赛2 F题黑黑白白 (博弈或dfs)
题目链接:https://www.nowcoder.com/acm/contest/86/F 解题思路:赛后看博客都说是sg函数.emmm,后面看了别人代码dfs也可以,只要找到一条能赢的路就可以. ...
- 使用.NET Core接入飞书AI
飞书AI接入教程 首先,准备俩个账号:ChatGPT账号.飞书账号. 飞书账号请自行注册,访问链接 www.feishu.cn/ 即可登录. 第一步,飞书进入开发者平台.点击创建应用. 填写应用名称和 ...
- startx详解
linux下startx命令详解 用途 初始化一个 X 会话. 语法 startx [ -d Display:0 ] [ -t | -w ] [ -x Startup | [ -r Resources ...
- Netty 组件介绍
BootStrap Netty 中的 BootStrap 分为两种:一种是客户端的 BootStrap:一种是服务端的 ServerBootStrap. 客户端的 BootStrap 初始化客户端,该 ...
- ChatGPT的中转站 oupuapi,不扶墙也能上楼
我们在建类似 chatgpt 聊天站点的时候,只需对服务器进行扶墙代理,便可实现访问. 那么我们只需要往深里想一下,不要让整个服务器去访问 VPN,而是基于 API 的代理,或者说 API 的中转站也 ...
- Mybatis源码3 CachingExecutor, 二级缓存,缓存的实现
Mybatis CachingExecutor, 二级缓存,缓存的实现 一丶二级缓存概述 上一章节,我们知道mybaits在构造SqlSession的时候,需要让SqlSession持有一个执行器,如 ...
- 文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题
五.MAX-HEAPIFY的代码效率较高,但第 10 行中的递归调用可能例外,它可能使某些编译器产生低效的代码.请用循环控制结构取代递归,重写 MAX-HEAPIFY代码. 文心一言: 以下是使用循环 ...
- SecSolar:为代码“捉虫”,让你能更专心写代码
摘要:在"更健壮.更安全"的路上,CloudIDE又迈出了关键的一步:推出了代码安全检测服务SecSolar,以轻量插件的形式,为代码"捉虫",帮助企业和开发者 ...
- centos8 测地卸载php5.6 与卸载php7
centos8 yum php 默认安装 php7.1.2 我想卸载php7 ,安装php5.6 yum remove php 无法彻底卸载干净.必须强制删除,使用下面命令查看全部php软件包 rpm ...
- 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...