MySQL中添加新列时一定会锁表吗
InnoDB 存储引擎
MyISAM 存储引擎
其他影响因素
分类:
数据库
聚焦技术和人文,分享干货,共同成长。
ALTER TABLE
语句添加新列会进行表锁,也就是在执行添加列操作期间,会对整个表加锁,其他事务无法对该表进行读写操作。例如执行以下语句:ALTER TABLE your_table_name ADD COLUMN new_column_name INT;
NULL
值或者有默认值时,MySQL 可以在不锁表的情况下完成添加列操作。例如:-- 添加允许 NULL 值的列
ALTER TABLE your_table_name ADD COLUMN new_column_name INT NULL;
-- 添加有默认值的列
ALTER TABLE your_table_name ADD COLUMN new_column_name INT DEFAULT 0;
NULL
值且没有默认值,MySQL 仍然可能需要对表进行锁表操作来保证数据的一致性。ALTER TABLE
语句添加新列时,会对整个表加写锁。在添加列的过程中,其他事务无法对该表进行读写操作,直到操作完成。例如:ALTER TABLE your_table_name ADD COLUMN new_column_name VARCHAR(50);
ALTER TABLE
语句中可以使用一些选项来控制锁表行为。例如,在 MySQL 中可以使用 ALGORITHM
和 LOCK
子句。ALGORITHM
用于指定执行操作的算法,LOCK
用于指定锁的级别。示例如下:ALTER TABLE your_table_name
ADD COLUMN new_column_name INT DEFAULT 0
ALGORITHM=INPLACE, LOCK=NONE;
ALGORITHM=INPLACE
表示使用原地算法进行操作,LOCK=NONE
表示不使用锁,允许在操作期间对表进行读写操作,但前提是操作支持这种模式。4180版本的是 8079 0500 0f94 c2
改为:c641 0501 b200 90
服务器的硬件时间比系统时间快100年,使用hwclock -w这个命令无法同步,大佬有别的可建议的命令吗
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架