MySQL 给数据表增加一列,一定会锁表吗?
在 MySQL 中,给数据表增加一列(ALTER TABLE 操作)是否会锁表,取决于以下几个因素:1. 存储引擎
InnoDB:这是 MySQL 默认的事务性存储引擎,从 MySQL 5.6 开始,InnoDB 支持在线 DDL(Online DDL),在某些情况下可以避免完全锁表。
MyISAM:这种存储引擎不支持在线 DDL,因此会对表进行完全锁定。
不同的操作对锁表的影响不同:
新增列:简单的增加一个不带默认值或允许 NULL 的列,InnoDB 通常支持在线 DDL,可以避免锁表。
新增列并带有默认值:如果需要对现有数据进行填充(例如新增列设置了非空约束且有默认值),可能会触发对表中每一行的更新,此时通常会锁表。
新增列并影响索引:如果新增的列涉及索引或主键,也可能导致表锁。
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(72)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)