问题描述
我是在Centos7和Centos8上使用MariaDB 10.4.13的DBA。
我们的开发团队需要在现有(小型)表的中间添加一个新列。
所以我们使用了这个:
ALTER TABLE tablename ADD COLUMN c1 enum('DEL','END') not null default 'END' AFTER c5;
这很好,但是我是这个主题的新手。 (我曾经担任过MS-SQL和DB2的DBA。)
我不知道使用ADD AFTER后MariaDB究竟能做什么(物理)。有没有风险?这会引起任何问题吗?在DB2中,这并不容易。
解决方法
将新列添加为表的最后一列还是在表的中间都没有区别。更改行大小的任何更改都会创建一个新的表空间,并将数据复制到一个新的表空间。这不会引起问题。
在复制过程中,它确实锁定了表。但是你说那是一张小桌子。这不是很具体(我不知道您认为大小是什么),但是可能不会花很长时间。也许一两秒钟。
但是,如果应用程序经常使用该表,则即使短暂锁定也可能导致应用程序中断。您应该与您的经理谈谈安排最佳时间来进行更改,该更改不会影响使用该表的应用程序。