MySQL8.0在进行alter增加表字段的时候,是否会锁表,规则是怎么样的
试过atler的同时,进行select,是查不出来的
MySQL8.0在进行alter增加表字段的时候,是否会锁表,规则是怎么样的
试过atler的同时,进行select,是查不出来的
在MySQL 8.0中,ALTER TABLE
语句的行为和其对表锁定的影响取决于多个因素,包括所执行的特定操作、表的存储引擎(如InnoDB),以及是否启用了在线DDL(Data Definition Language)操作的支持。
ALTER TABLE
操作不会阻塞对表的查询(SELECT)或更新(UPDATE, DELETE等)。但是,这并不意味着没有锁。ALTER TABLE
操作(如更改列的数据类型、删除列、添加索引等),可能需要更长时间的锁表或更复杂的锁行为,这取决于操作的具体类型和复杂性。ALTER TABLE
时,MySQL会尝试最小化对表访问的影响,但某些操作可能需要短暂的元数据锁(metadata lock)或表锁。ALTER TABLE
时,你发现SELECT查询被阻塞,这可能是由于MySQL需要暂时锁定表以完成操作。但是,在大多数情况下,增加列(Add Column)的操作应该允许并发SELECT查询。在MySQL 8.0中,对于InnoDB表,增加列(Add Column)的ALTER TABLE
操作通常是在线的,不会显著阻塞对表的查询。然而,如果遇到查询被阻塞的情况,可能是由于MySQL在处理表结构变更时需要短暂的锁。
如果你确实遇到了在ALTER TABLE
期间SELECT查询被阻塞的问题,建议检查MySQL的版本和配置,以及是否有可能的其他因素(如其他并发操作、表损坏等)导致了这种情况。此外,考虑在业务低峰时段执行这类操作,以减少对业务的影响。
15 回答8.4k 阅读
4 回答4.4k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
4 回答4k 阅读
1 回答2.9k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决