如何安全的大数据量表在线进行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的出现暂时 ...
随机推荐
- 后端程序员必会的前端知识-05:React
五. React 1. React 基础 react 是前端三大框架之一 没有 vue 的基础更好,因为两者思想不太一样,不能用 vue 的习惯学习 react 需要有 js 基础,视频 19-58 ...
- django-celery-results - 使用 Django ORM/Cache 作为结果后端
https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html#django-celery-results-using-t ...
- 华企盾DSC控制台操作卡顿如何解决
解决方法: 修改注册表: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 的 USERProcessHa ...
- X410的白嫖方案
微软商店下的x410要收费试用也就几天,记录白嫖方案.配置和使用跳转到上一篇文章:Windows下使用图形化的Havoc C2 编译运行 GitHub上start最多的是这个仓库,但是已经很久没有维护 ...
- Windows 激活系统提示0x80072F8F错误代码的解决方法(刷新你的认知)
Server2008.Server2012.Server2016.Win7.Win10都适用 https://blog.csdn.net/happyxjbf/article/details/10591 ...
- linux文件摘选
显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以由其他字符)的文件或目录. 命令: ls -d /var/1*[0-9]*[a-z] [root@foundation0 ...
- 心理健康数据集:mental_health_chatbot_dataset
一.数据集描述 1.数据集摘要 该数据集包含与心理健康相关的问题和答案的对话对,以单一文本形式呈现.数据集是从流行的医疗博客(如WebMD.Mayo Clinic和HealthLine).在线常见 ...
- 18篇文章系统解读:中台规划如何撬动企业IT基础设施转型升级
摘要:通过这个系列,让大家对中台的价值.针对的问题痛点.中台规划的方法思路和技巧.一些中台业务实践有个基本的认识,让客户清楚的意识到企业中台的业务价值,进而通过企业中台规划牵引客户IT基础设施投资. ...
- 如何正确使用Python临时文件
摘要:临时文件通常用来保存无法保存在内存中的数据,或者传递给必须从文件读取的外部程序.一般我们会在/tmp目录下生成唯一的文件名,但是安全的创建临时文件并不是那么简单,需要遵守许多规则. 1.前言 临 ...
- 理论+实例,带你掌握Linux的页目录和页表
摘要:操作系统在加载用户程序的时候,不仅仅需要分配物理内存,来存放程序的内容:而且还需要分配物理内存,用来保存程序的页目录和页表. 本文分享自华为云社区<Linux从头学15:[页目录和页表]- ...