DDL 操作的性能在很大程度上取决于是否重建表。
对于修改表数据的 DDL 操作,查看命令完成后显示的“受影响行”值就可以确定 DDL 操作是就地执行更改还是执行表 COPY(或者说重建)。
例如:
# 1.更改列的默认值(快速,不影响表数据)
Query OK, 0 rows affected (0.07 sec)
# 2.添加索引 (花费一些时间, 但是 "0 rows affected" 表示表未被 copy):
Query OK, 0 rows affected (21.42 sec)
# 3.更改列的数据类型(需要大量时间,需要重建表的所有行):
Query OK, 1671168 rows affected (1 min 35.54 sec)
2. 关于 ALGORITHM 和 LOCK 子句的说明
1> LOCK 子句可用于 INPLACE 执行的操作,可用于操作期间对表的并发访问程度。其中 LOCK=DEFAULT 仅支持 INSTANT 操作。
2> 关于 ALGORITHM 子句与 LOCK 子句:
当 ALTER TABLE 选择 inplace 模式时,为避免操作期间无法读取、写入,可指定 lock 子句控制,例如 LOCK=NONE(permit reads and
文档被以下合辑收录
评论