• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql ALTER TABLE加字段的时候到底锁不锁表

    Mysql5.6版本之前

    更新步骤

    Mysql5.6版本之后

    更新步骤

    总结

    ALTER TABLE 加字段会加锁。只是Mysql5.6版本之后新增了ONLINE DDL的功能,可以使该表不能使用的时间大大缩短。

    注意

    ALTER TABLE 加字段的时候。如果该表的数据量非常大。不要设置default值。
    比如,当前有2000万以上数据量的表。如果加字段加了default值。Mysql会执行在执行Online DDL之后,对整个表的数据进行更新默认值的操作,即

    UPDATE `table_name` SET new_col = [默认值] WHERE TRUE
    

    这样就相当于是更新了2000w+的数据,而且是在同一个事务里。也就是说这个事务会把整个表都锁住,直到所有的数据记录都更新完默认值以后,才会提交。

    这个时间非常长,而且由于会锁全表的记录,所以该表不可用的时间会非常长。

    笔者实验过16核,32G,Mysql默认配置。500w的数据量加一个字段。

    不加default值,整个DDL更新过程是66秒。而且整个更新过程,该表的查询、修改、新增操作都是可用的。几乎对该表的可用性没有任何影响。

    加default值,整个DDL更新过程是213秒。经过测试,大约在100秒之后,该表的查询、修改、新增操作都会陷入等待状态。

    到此这篇关于Mysql ALTER TABLE加字段的时候到底锁不锁表的文章就介绍到这了,更多相关Mysql ALTER TABLE加字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • mysql alter table 修改表命令详细介绍
    • mysql alter table修改表命令整理
    • mysql alter table命令修改表结构实例
    • mysql alter table命令修改表结构实例详解
    • MySQL中的alter table命令的基本使用方法及提速优化
    • MySQL学习笔记5:修改表(alter table)
    上一篇:基于 Mysql 实现一个简易版搜索引擎
    下一篇:MySQL是怎么保证主备一致的
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql ALTER TABLE加字段的时候到底锁不锁表 Mysql,ALTER,TABLE,加,字段,的,