【发布时间】:2020-12-19 11:00:09
【问题描述】:
我是一名 DBA,在 Centos7 和 Centos8 上使用 MariaDB 10.4.13。
我们的开发团队需要在现有(小)表的中间添加一个新列。
所以我们用了这个:
ALTER TABLE tablename ADD COLUMN c1 enum('DEL', 'END') not null default 'END' AFTER c5;
这很好用,但我是这个主题的新手。 (我曾经担任 MS-SQL 和 DB2 的 DBA)。
我不知道 MariaDB 究竟(物理)使用 ADD AFTER 做了什么。有没有风险?这会导致任何问题吗?在 DB2 中,这并不容易。
【问题讨论】:
-
您担心什么样的风险——语句运行期间表被锁定?您可以克隆您的实时数据库并在克隆上运行命令,看看是否有任何问题。
-
DDL操作会阻塞包括读写在内的DML操作。所以当你的表有大量数据时,会有很长的阻塞时间。为了更好的选择,你可以使用在线ddl操作,这将不阻止 DML 操作。
-
“小”表——去做吧。