在MariaDB / InnoDB中运行“添加列后”有任何风险吗?

问题描述

我是在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中,这并不容易。

解决方法

将新列添加为表的最后一列还是在表的中间都没有区别。更改行大小的任何更改都会创建一个新的表空间,并将数据复制到一个新的表空间。这不会引起问题。

在复制过程中,它确实锁定了表。但是你说那是一张小桌子。这不是很具体(我不知道您认为大小是什么),但是可能不会花很长时间。也许一两秒钟。

但是,如果应用程序经常使用该表,则即使短暂锁定也可能导致应用程序中断。您应该与您的经理谈谈安排最佳时间来进行更改,该更改不会影响使用该表的应用程序。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...