mysql 亿级别数据表如何新增字段,需要注意什么,有什么风险?
在 MySQL 里对 亿级别(10^8 级别)的大表增加字段,需要格外谨慎,因为这类 DDL 操作(ALTER TABLE ADD COLUMN
)可能会 锁表、影响业务性能、甚至引发长时间不可用。我来分几点详细说明:
1. 新增字段的原理
-
传统的 MySQL InnoDB 在执行
ALTER TABLE ADD COLUMN
时,会 重建整张表:-
创建一张临时新表;
-
复制原表数据;
-
删除旧表并重命名新表;
-
这个过程对大表非常耗时、占用大量 I/O 和 CPU。
-
-
如果用的是 MySQL 8.0,部分
ADD COLUMN
操作是 Instant DDL,即“瞬时”完成,不需要重建表,也不会长时间锁表。但它有条件(比如列添加在表的最后,不能有 default 表达式等)。
2. 需要注意的点
热门日志
分类
- 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)
- 架构(19)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(38)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(73)
- 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)