官方文档:

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html

虽然官方统计了大部分DDL操作时,是否允许DML,但并不是很全,或者有些支持DML,但仅仅只支持查询,不支持增删改操作。

版本:MySQL 5.7

场景一、

修改 varchar 字段长度时,在 utf8mb4 字符集下,varhcar 长度从【1-63】长度变为 【64及以上】长度时,会锁表,只能查询。反之亦然

State:copy to tmp table

场景二、int 类型个性为 decimal(10,2),会锁表,只能查询。

State:copy to tmp table

MySQL [(none)]> show processlist;
+----+------+-----------------+-------+---------+------+---------------------------------+-------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+-------+---------+------+---------------------------------+-------------------------------------------+
| 9 | root | localhost:39614 | ceshi | Sleep | 1604 | | NULL |
| 12 | root | localhost:39620 | NULL | Query | 3 | Waiting for table metadata lock | select * from ceshi.t1 limit 1 for update |
| 13 | root | localhost:39622 | NULL | Query | 0 | starting | show processlist |
| 17 | root | localhost:39630 | ceshi | Query | 5 | copy to tmp table | alter table t1 modify age delimal(10,2) |
+----+------+-----------------+-------+---------+------+---------------------------------+-------------------------------------------+

场景三、

varchar 长度 60 -> 100 ,同时新增加一个 varchar 字段。会锁表,只能查询。

MySQL [(none)]>   show processlist;
+----+------+-----------------+-------+---------+------+-------------------+-------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+-------+---------+------+-------------------+-------------------------------------------------------------------------+
| 9 | root | localhost:39614 | ceshi | Sleep | 1903 | | NULL |
| 12 | root | localhost:39620 | NULL | Query | 0 | starting | show processlist |
| 13 | root | localhost:39622 | NULL | Sleep | 299 | | NULL |
| 17 | root | localhost:39630 | ceshi | Query | 6 | copy to tmp table | alter table t1 modify name varchar(100),add column describ varchar(100) |
+----+------+-----------------+-------+---------+------+-------------------+-------------------------------------------------------------------------+
4 rows in set (0.000 sec)

场景四、

varchar 修改为 text。会锁表,只能查询

MySQL [ceshi]> show processlist;
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------+
| 3 | root | 127.0.0.1:33426 | ceshi | Query | 3 | copy to tmp table | alter table t1 modify describ text |
| 4 | root | 127.0.0.1:33428 | ceshi | Query | 0 | starting | show processlist |
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------+

场景五、

varchar2048 -> 2047 减小会锁表

MySQL [ceshi]> show processlist;
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------------+
| 3 | root | 127.0.0.1:33426 | ceshi | Query | 3 | copy to tmp table | alter table t1 modify name varchar(2047) |
| 4 | root | 127.0.0.1:33428 | ceshi | Query | 0 | starting | show processlist |
+----+------+-----------------+-------+---------+------+-------------------+------------------------------------------+
2 rows in set (0.000 sec)

最新文章

  1. 弹窗样式 idialog,purebox,artdialog4.1.2,jquery.alert.v1.2
  2. <select> 默认选中
  3. autoit小贴士
  4. 20145211 《Java程序设计》第6周学习总结——三笑徒然当一痴
  5. java万物皆对象
  6. c fopen文件读写
  7. (转)C#使用Mysql记录
  8. 20141031--SQL分组,数学函数,聚合函数
  9. 常见iis错误之一
  10. Java中泛型的理解
  11. 洛谷P3459 [POI2007]MEG-Megalopolis(树链剖分,Splay)
  12. js浮点数运算的坑,多少同学有碰到过?
  13. python多进程之间的通信:消息队列Queue
  14. MySQL yum 在线与本地包方式安装
  15. async和await学习笔记
  16. GlusterFS六大卷模式說明
  17. 中国程序化购买广告解析:RTB/DSP/Ad Exchange/SSP/DMP,思维导图
  18. Linux C 文件操作函数(~上善止水~)
  19. [na]icmp重定向
  20. ios 给键盘上面加上“完成”

热门文章

  1. 队列——queue的用法(及洛谷B3616)
  2. JZOJ 2022.07.06【提高组A】模拟
  3. JZOJ 4366. 【GDKOI2016】项链
  4. 用ChatGPT,绘制一个账号系统的C4架构图
  5. Postgresql 全局索引与分区索引对于SQL性能影响的比较及DDL操作后分区全局索引是否会失效
  6. OSI网络7层模型,TCP/IP协议族
  7. Python 01-Unittest的使用 unittest简单应用
  8. React父组件如何调用子组件方法,访问子组件State
  9. gitlab 搭建代理踩坑
  10. 四、流程控制、break、continue、return