searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

mysql的几种online ddl算法介绍

2025-01-02 09:07:00
30
0

MySQL的Online DDL(在线数据定义语言)算法允许在执行表结构变更时尽量减少对表的锁定和性能影响。以下是主要的Online DDL算法:

1. ALGORITHM=INSTANT
- 最快速的算法
- 元数据操作,不需要重建表
- 仅修改表的元数据信息
- 适用于:
  - 增加/删除列(不含BLOB/TEXT)
  - 重命名列
- 几乎瞬间完成,对性能影响最小

2. ALGORITHM=INPLACE
- 不完全重建表
- 部分在线操作
- 支持大多数DDL操作
- 优点:
  - 避免完全表重建
  - 允许并发DML操作
- 适用场景:
  - 添加/删除索引
  - 修改列类型(部分)
  - 转换存储引擎

3. ALGORITHM=COPY
- 完全表重建
- 需要复制整个表
- 性能开销最大
- 锁表时间较长
- 适用于复杂的表结构变更

4. ALGORITHM=DEFAULT
- 自动选择最优算法
- MySQL自动判断使用INSTANT/INPLACE/COPY

示例:
```sql
ALTER TABLE table_name 
ADD COLUMN new_column INT, 
ALGORITHM=INSTANT;

ALTER TABLE table_name
ADD INDEX idx_name(column),
ALGORITHM=INPLACE;
```

关键考虑因素:
- 表大小
- 操作类型
- 性能要求
- 并发需求

建议根据具体场景选择合适的算法。

0条评论
0 / 1000
c****8
2文章数
0粉丝数
c****8
2 文章 | 0 粉丝
c****8
2文章数
0粉丝数
c****8
2 文章 | 0 粉丝
原创

mysql的几种online ddl算法介绍

2025-01-02 09:07:00
30
0

MySQL的Online DDL(在线数据定义语言)算法允许在执行表结构变更时尽量减少对表的锁定和性能影响。以下是主要的Online DDL算法:

1. ALGORITHM=INSTANT
- 最快速的算法
- 元数据操作,不需要重建表
- 仅修改表的元数据信息
- 适用于:
  - 增加/删除列(不含BLOB/TEXT)
  - 重命名列
- 几乎瞬间完成,对性能影响最小

2. ALGORITHM=INPLACE
- 不完全重建表
- 部分在线操作
- 支持大多数DDL操作
- 优点:
  - 避免完全表重建
  - 允许并发DML操作
- 适用场景:
  - 添加/删除索引
  - 修改列类型(部分)
  - 转换存储引擎

3. ALGORITHM=COPY
- 完全表重建
- 需要复制整个表
- 性能开销最大
- 锁表时间较长
- 适用于复杂的表结构变更

4. ALGORITHM=DEFAULT
- 自动选择最优算法
- MySQL自动判断使用INSTANT/INPLACE/COPY

示例:
```sql
ALTER TABLE table_name 
ADD COLUMN new_column INT, 
ALGORITHM=INSTANT;

ALTER TABLE table_name
ADD INDEX idx_name(column),
ALGORITHM=INPLACE;
```

关键考虑因素:
- 表大小
- 操作类型
- 性能要求
- 并发需求

建议根据具体场景选择合适的算法。

文章来自个人专栏
mysql3306
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0