MySQL5.7新特性之在线DDL不会锁表

      MySQL5.7在线修改varchar字段不在锁表,测试过程如下:

点击(此处)折叠或打开

成都创新互联是一家专注网站建设、网络营销策划、成都小程序开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立10多年以来,已经为成百上千家混凝土搅拌罐各业的企业公司提供互联网服务。现在,服务的成百上千家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。

  1. mysql> select version();
  2. +------------+
  3. | version() |
  4. +------------+
  5. | 5.7.18-log |
  6. +------------+

点击(此处)折叠或打开

  1. mysql> select count(*) from T_USER_INFO;
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 7147528 |
  6. +----------+
打开两个命令行窗口:
窗口一:

点击(此处)折叠或打开

  1. mysql> alter table T_USER_INFO modify column USER_NAME varchar(100);
窗口二:

点击(此处)折叠或打开

  1. mysql> delete from T_USER_INFO where user_name='rz19930119';
   先执行第一个窗口命令,再执行第二个窗口命令,第二个delete语句很快执行完,第一个修改语句执行了6分钟。
总结:MySQL5.7以上的版本,online DDL不会锁表。
原理:
   MySQL5.7以上的版本中,在执行创建或者删除的操作同时,将DML操作日志写入一个缓存中。待修改完成之后再重做到原表上,以保住数据的一致性。这个缓存大小由innodb_online_alter_log_max_size控制,默认为128MB,若用户更改表比较频繁,在线DML业务压力较大,则innodb_online_alter_log_max_size空间不能存放日志,会抛出错误,此时可以调大innodb_online_alter_log_max_size获得更多日志缓存空间解决问题 。
网页题目:MySQL5.7新特性之在线DDL不会锁表
URL标题:http://hxwzsj.com/article/jcsgcs.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 成都网站设计公司 成都商城网站制作 营销网站建设 成都网站建设 H5网站制作 定制级高端网站建设 成都网站建设 营销型网站建设 成都网站建设流程 四川成都网站建设 网站制作 成都营销网站建设 网站建设改版 app网站建设 营销型网站建设 四川成都网站设计 成都网站设计 成都网站设计 重庆企业网站建设 温江网站设计 外贸网站建设 网站设计