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双机热备实现方案,需要的朋友可以参考下
    2019-10-10
  • MySQL正则表达式regexp_replace函数的用法实例

    MySQL正则表达式regexp_replace函数的用法实例

    regexp_replace的使用非常灵活,且容易忘记,故做此笔记,下面这篇文章主要给大家介绍了关于MySQL正则表达式regexp_replace函数的用法实例,需要的朋友可以参考下
    2022-09-09
  • MySQL判断查询条件是否包含某字符串的7种方式总结

    MySQL判断查询条件是否包含某字符串的7种方式总结

    SQLServer数据库死锁是指在多个事务同时访问数据库资源时,发生了互相等待对方所持有资源的情况,导致所有事务无法继续执行的现象,这篇文章主要给大家介绍了关于MySQL判断查询条件是否包含某字符串的7种方式,需要的朋友可以参考下
    2024-07-07
  • mysql数据库链接失败常见问题及解决

    mysql数据库链接失败常见问题及解决

    这篇文章主要介绍了mysql数据库链接失败常见问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL中的LENGTH()函数用法详解与实例分析

    MySQL中的LENGTH()函数用法详解与实例分析

    MySQL LENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证、截取及迁移优化,需注意NULL和编码影响,本文给大家介绍MySQL中的LENGTH()函数用法详解与实例分析,感兴趣的朋友一起看看吧
    2025-07-07
  • mysql 8.0.12 安装配置方法图文教程

    mysql 8.0.12 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • mysql最左前缀法则导致索引失效的解决

    mysql最左前缀法则导致索引失效的解决

    最左前缀是在使用innodb存储引擎索引时,需要遵守的法则,本文主要介绍了mysql最左前缀法则导致索引失效的解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • MySQL自连接与子查询方式

    MySQL自连接与子查询方式

    这篇文章主要介绍了MySQL自连接与子查询方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • MySQL数据库迁移快速导出导入大量数据

    MySQL数据库迁移快速导出导入大量数据

    今天小编就为大家分享一篇关于MySQL数据库迁移快速导出导入大量数据,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 浅谈开启magic_quote_gpc后的sql注入攻击与防范

    浅谈开启magic_quote_gpc后的sql注入攻击与防范

    通过启用php.ini配置文件中的相关选项,就可以将大部分想利用SQL注入漏洞的骇客拒绝于门外
    2012-01-01

最新评论