MySQL5.7快速修改表中字段长度
Posted qq931399960
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL5.7快速修改表中字段长度相关的知识,希望对你有一定的参考价值。
在mysql 5.5版本时,商用环境升级,有一个表存在六千多万数据,升级时需要修改这个表其中一个varchar类型字段的长度,当时用了大概4个多小时,还没有结束,之后我们系统mysql升级到5.7版本,再一次升级模拟测试中,又修改了该表的字段长度,这次用时为7个多小时,下面是记录的时间。(进入mysql命令行,执行tee upgrade.log,之后执行的sql都会记录到该log中,当不需要记录时,执行notee)
Query OK, 0 rows affected (7 hours 48 min 9.15 sec) Records: 0 Duplicates: 0 Warnings: 0
虽然没有sql信息,但该条sql执行时,使用如下命令查看的info信息确实就是在修改该表,所以可确定,这个时间就是这张表的字段修改造成的
show full processlist
在5.7上官网上查看Online DDL Operations介绍,发现添加某个参数后,修改表结构不用拷贝数据,这样就会大大的节省了时间,改参数为ALGORITHM=INPLACE,但该参数只能用于字段长度变长的情况,否则值应该填写为copy
mysql> ALTER TABLE db.table MODIFY COLUMN IPADDRESS VARCHAR(60), ALGORITHM=INPLACE; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
添加了改参数后,修改字段长度的时间从七个多小时一下子就下降到了0.06秒,可以说是瞬间就执行结束,且修改成功
以上是关于MySQL5.7快速修改表中字段长度的主要内容,如果未能解决你的问题,请参考以下文章
mysql5.7基础 insert 表中含有自动增长的字段,插入数据时用NULL
mysql5.7 mysql库下面的user表没有password字段无法修改密码