开发者社区> fuyifang> 正文

paip.解决 数据库mysql增加列 字段很慢添加字段很慢

简介: paip.解决 数据库mysql增加列 字段很慢添加字段很慢 环境如下: mysql5.6 数据仅仅3w alter table xxx add column yyy int default 0; 添加字段很慢,好几份中都没有好。
+关注继续查看

paip.解决 数据库mysql增加列 字段很慢添加字段很慢

环境如下:

mysql5.6 数据仅仅3w
alter table xxx add column yyy int default 0;
添加字段很慢,好几份中都没有好。。

原因以及解决

[SQL] alter table grejx_def add column flag12 int default 0;
受影响的行: 0
不是那种lock–copoy–rewrite的方式.effeic row sh 0 ,为甚还是这么慢的是??
Oracle 11g的快速加字段功能就是好啊..

数据结构紊乱兰,只要不个table 优化给挂走ok兰。。
字谣0.3s走ok兰..

作者 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax

mysql数据库添加字段或者修改结构过程如下

由于mysql在线ddl(加字段、加索引等修改表结构之类的操作)过程如下:

A.对表加锁(表此时只读)
B.复制原表物理结构
C.修改表的物理结构
D.把原表数据导入中间表中,数据同步完后,锁定中间表,并删除原表
E.rename中间表为原表
F.刷新数据字典,并释放锁

添加字段很慢
alter table grejx_def add column flag int default 0;

大的数据哈的解决

停掉mysql服务器来修改表结构。然后进行滚动式更新

Facebook数千台MySQL服务器在过去增加个索引需要几个月的滚动升级(后来他们自己开发了后面提到的工具,只需要几天)

在加字段之前进行测验mysql是否复制表,以减低应用卡死的风险:

在命令结束之后看看显示“rows affected “的值。例如,这里您可能会看到在做不同类型的DDL操作:

拷贝表结构,然后插入少量的数据。去修改表结构。看影响的行。如果为0,则表示不会拷贝中间表的方式

关于online-schema-change

是percona推出的一个针对mysql在线ddl的工具

新的思路(手动执行mysql的过程)

1:手动的创建好修改后的表结构 NEW_TAB。(比如新增字段,修改表字段类型。删除表字段,可以一并一次性搞定)
对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更 过程中速度最慢的一部分)的速度。
2: 选择性的将旧表OLD_TAB数据插入到修改后的表。(这里需要注意的是海量数据的处理。可以将表记录按照主键分批进行插入处理,其实在如果分表处理的话,在业务代码中也是可以进行修改处理的,分而治之。)

3:rename表名称。 (这里需要注意的是RENAME过程中的锁表,可以在业务空闲的凌晨晚上进行处理)。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
前面几篇文章详细介绍了sqoop全量增量导入数据到hive,大家可以看到我导入的数据如果有时间字段的话我都是在hive指定成了string类型,虽然这样可以处理掉时间字段在hive为空的问题,但是在kylin创建增量cube时需要指定一个时间字段来做增量,所以上面那种方式不行,这里的处理方式为把string改成timestamp类型,看实验:
7 0
Mysql新增字段、修改字段
Mysql新增字段、修改字段
15 0
MySQL DATE字段,默认为CURDATE()不是DATETIME
MySQL DATE字段,默认为CURDATE()不是DATETIME
14 0
MYSQL sql查询将 2018-11-01 01:02:03:04:22 时分秒改为00:00:00 及查询其他字段
MYSQL sql查询将 2018-11-01 01:02:03:04:22 时分秒改为00:00:00 及查询其他字段
20 0
mysql 查询某字段中以逗号分隔的字符串的方法
mysql 查询某字段中以逗号分隔的字符串的方法
43 0
MySQL:自动维护create_time和update_time字段
通过建表语句设置,让mysql自动维护这两个字段,那么编程的时候也能少写一部分代码
13 0
MySQL给某个字段添加索引
MySQL给某个字段添加索引
19 0
【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
上一篇文章我们介绍了 【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析,重点介绍了EXPLAIN命令的select_type,partition,type,key,key_len 字段含义。这篇文章我将接着介绍剩余字段的含义。本文会介绍ref、rows、filtered、Extra这几个字段。比较重要的两个字段是rows、Extra
80 0
【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析
上一篇文章我们介绍了【MySQL从入门到精通】【高级篇】(二十三)EXPLAIN的概述与table,id字段的剖析,重点对EXPLAIN命令进行了阐述,并且对table,id字段进行了剖析。这篇文章接着对EXPLAIN命令的其余字段进行解析,本文将介绍select_type,partition,type,key,key_len 字段的含义。其中:读者朋友们需要重点掌握 select_type,type 两个字段的含义。
45 0
【MySQL从入门到精通】【高级篇】(二十三)EXPLAIN的概述与table,id字段的剖析
上一篇文章我们介绍了【MySQL从入门到精通】【高级篇】(二十二)慢查询日志分析,SHOW PROFILE查看SQL执行成本,这篇文章我们接着来介绍一下MySQL中一个非常重要的命令 EXPLAIN。当我们定位到查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。 DESCRIBE 语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。
37 0
+关注
fuyifang
携程旅行网技术研发中心资深研发工程师,研发Leader;CSDN博客专家;
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载