mariadb 对于较大的表,ALTER TABLE是否需要更长的时间?

oyt4ldly  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(86)

如果我有一个1000行的表A,和一个结构相同的表B,但这次有1000000行,那么对表B执行ALTER TABLE(例如添加两个新列)需要更长的时间吗?如果是这样的话,它会根据有多少行而按比例延长吗?
除此之外,如果ALTER TABLE语句不只是添加新列,如果它改变了现有列的结构呢?
这基本上归结为MySQL如何在低级别存储数据,这不是我所熟悉的。

nhhxz33t

nhhxz33t1#

追加时可以立即删除列,或者在10.4+中,如果alter_algorithm='INSTANT'可以添加到任何地方,与正常存储不同(具有存储后果)。
其他操作,有些是可能的,文件是广泛的。您可以使用以下工具进行测试:

SET STATEMENT alter_algorithm='INSTANT' FOR ALTER TABLE tab MODIFY COLUMN c int;

如果它不能立即完成,它就会出错。
ref:MariaDB KB InnoDB online

0dxa2lsx

0dxa2lsx2#

是的,它需要更长的时间:
由于它需要检查每一行,如果被修改的列接受该行的内容,那么一个行数更大的表,将需要更长的时间来处理。
查看手册将给予更多关于Alter的细节

相关问题