mysql如何修改字段的长度锁表

 更新时间:2026年02月07日 09:49:12   作者:花开不识君  
MySQL修改字段长度是否锁表取决于具体操作,对于UTF8字符集,如果修改后字段长度的字节数不跨越255,则不会锁表;如果跨越255,则可能会锁表

mysql修改字段的长度锁表问题

MySQL(这里指5.6及其后续版本=)修改字段的长度锁表会锁表吗?答案是可能会但不一定会

具体原理

  • MySQL 5.6 及以后版本扩大字段长度 支持 online ddl in-place 模式,而这将不会锁表
  • varchar 表示可变长字符,所以实际每一行数据中都保存了这字段的实际字节长度,众所周知utf8使用三个字节保存,而utf8mb4使用4个字节,如果字节数小于255则可以使用1btyte保存,而超过255则需要使用2bype保存则就需要修改每一行数据,这将导致锁表

简单来说

  • 缩小字段长度会导致锁表
  • 扩展字段长度,如果扩大的字段长度所表示的字节不跨越255将不会锁表,否则锁表

实验

这是使用异常包含两万数据数据的表,字段初始长度为50(使用字符集为utf8)

  • 修改为85(最终最大字节长数为255),耗时28ms,不锁表

  • 还原回50,耗时3s429ms,锁表(这里根据耗时可以反推出进行了全表更新)

  • 再次修改为86(字节数跨越了255)耗时3s281ms,锁表

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL中聚簇索引与非聚簇索引的实现

    MySQL中聚簇索引与非聚簇索引的实现

    MySQL数据库中,聚簇索引和非聚簇索引是提高查询效率的关键,聚簇索引决定数据的物理存储顺序,通常由主键或UNIQUE索引构成,非聚簇索引则通过指针定位数据行,适合访问数据子集,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-09-09
  • Mysql中LIMIT语句的具体使用

    Mysql中LIMIT语句的具体使用

    本文主要介绍了Mysql中LIMIT语句的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Mysql Sql 语句练习题(50道)

    Mysql Sql 语句练习题(50道)

    mysql一直作为比较热门的数据库存储,搭配php使用简直是绝配,mysql的sql语句也是很重要的一门课,这里为大家分享一下sql语句,大家可以试试
    2020-12-12
  • 如何利用MySQL添加联合唯一索引

    如何利用MySQL添加联合唯一索引

    索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的,下面这篇文章主要给大家介绍了关于如何利用MySQL添加联合唯一索引的相关资料,需要的朋友可以参考下
    2022-04-04
  • mysql socket文件作用详解

    mysql socket文件作用详解

    这篇文章主要介绍了mysql socket文件作用的相关资料,需要的朋友可以参考下
    2016-09-09
  • Mysql命令大全(详细篇)

    Mysql命令大全(详细篇)

    这篇文章主要介绍了Mysql命令大全,这里整理的算是比较详细的,需要的朋友可以参考下
    2015-11-11
  • MySQL InnoDB引擎的缓存特性详解

    MySQL InnoDB引擎的缓存特性详解

    这篇文章主要介绍了MySQL InnoDB引擎的缓存特性详解的相关资料,需要的朋友可以参考下
    2022-09-09
  • 解决mysql报错:1264-Out of range value for column ‘字段‘ at row 1

    解决mysql报错:1264-Out of range value for&nb

    这篇文章主要介绍了解决mysql报错:1264-Out of range value for column ‘字段‘ at row 1问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL数据库从安装到理解

    MySQL数据库从安装到理解

    本文详细记录了在基于Debian/Ubuntu的Linux系统上,从零开始安装、配置、使用乃至彻底卸载MySQL的全过程,文章深入剖析了MySQL的逻辑架构,包括连接层、核心服务层和存储引擎层,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • mybatis-plus如何使用sql的date_format()函数查询数据

    mybatis-plus如何使用sql的date_format()函数查询数据

    这篇文章主要给大家介绍了关于mybatis-plus如何使用sql的date_format()函数查询数据的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02

最新评论