网络知识 娱乐 MySQL8.0.29表新增字段和删除字段大优化

MySQL8.0.29表新增字段和删除字段大优化

最近新推出的MySQL8.0.29的版本,对表的新增字段和删除字段有很大优化,在MySQL8.0.29之前的版本,新增字段,如果想秒级返回,就只能放到表的最后面,不能指定列的位置,例如指定after之类的属性。

在MySQL8.0.29之前的版本,删除字段,不是秒级返回的,而是inplace算法,相当于重建表了,所以非常耗时,但是在MySQL8.0.29版本,删除字段就是秒级返回的。

下面在MySQL8.0.29版本上做一下测试

删除字段

mysql> select count(*) from sbtest1;n+----------+n| count(*) |n+----------+n| 4997301 |n+----------+n1 row in set (34.42 sec)nnmysql> alter table sbtest1 drop col10;nQuery OK, 0 rows affected (0.68 sec)nRecords: 0 Duplicates: 0 Warnings: 0

指定位置添加字段

mysql> alter table sbtest1 add col10 char(10) not null default '' after pad1;nQuery OK, 0 rows affected (0.40 sec)nRecords: 0 Duplicates: 0 Warnings: 0

从上面测试结果看,都是秒级返回的。

注意事项

在MySQL8.0.29版本为支持上述两个功能优化,对redo log也是做了修改的,如果你在使用Percona Xtrabackup备份数据库,会发生不兼容的问题,这个只能等Percona官方发布新的版本。