我遇到过
https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html
MySql文档指出,将varchar列的长度从255扩展到1024只能通过算法副本实现。
我在这里附上了一段文档的片段
然而,当我试图在表上运行alter sql来实现这一点时,我收到了奇怪的结果。我有一个表table1,其中列col1为varchar(255),我在上面运行了alter sql。
执行以下sql所花费的时间
0.07
秒数
Alter table table1 modify column col1 varchar(1024)
然而,执行以下sql需要
26.54
秒数
Alter table table1 modify column col1 varchar(1024), algorithm=copy
根据文档,此更改操作只能使用复制算法执行,但查询结果显示为其他方式。查询在MySql-Db 8.0.32版本上运行,使用InnoDB存储引擎。有人能帮我理解为什么我会观察到提到的行为吗?
另一个观察结果是,在有/没有复制算法的情况下,将varchar的长度从1024减少到255需要26.54秒,这推断出减少它确实是在使用复制算法,那么为什么反向操作不会这样做呢?
在没有指定任何算法的情况下,执行alter-Sql需要0.07秒,但使用复制算法需要26.54秒。我预计两者都需要26.54秒。