【问题描述】
SequoiaSQL-MySQL的alter table原理是创建临时表,然后将数据导入到临时表,最后将数据插回去吗?
alter table创建的临时表在哪里,下压方式是什么?
【解决办法】
SequoiaSQL-MySQL alter table 可以指定两种算法(ALGORITHM):
1. ALGORITHM = INPLACE,不需要创建临时表。如果数据需要更新,则会下压到更新操作到 SequoiaDB。
2. ALGORITHM = COPY,需要创建临时表,流程如下:
(1) 创建相同元数据的临时表。
(2) 将旧表数据插入新表。
(3) 新表与旧表交换名字。
(4) 删除旧表。
算法可以由 SQL 指定,例如:
```
ALTER TABLE t1 ADD COLUMN new_col, ALGORITHM = COPY;
```
默认优先使用 INPLACE,如果操作不允许 INPLACE 执行,则使用 COPY 算法。