• 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秒,可以说是瞬间就执行结束,且修改成功

  • 相关阅读:
    【java虚拟机】垃圾回收机制详解
    【java虚拟机】分代垃圾回收策略的基础概念
    【java虚拟机】内存分配与回收策略
    【java虚拟机】jvm内存模型
    【转】新说Mysql事务隔离级别
    【转】互联网项目中mysql应该选什么事务隔离级别
    有关PHP的字符串知识
    php的查询数据
    php练习题:投票
    php的数据访问
  • 原文地址:https://www.cnblogs.com/qq931399960/p/10973406.html
Copyright © 2020-2023  润新知