最近有一个问题,在一个有 100 万行的表上添加一列需要 5 个小时。我添加了一个默认值为 1 的列。这是在夜间完成的,因此数据库上没有太多活动,但是一旦开始,它确实有很多锁。
查看服务器统计信息 CPU、内存和硬盘空间都远低于其最大值的一半。所以我不知道为什么这花了这么长时间,有问题的表只有 7 列,包括新的。数据类型为 int(11)、datetime 或 varchar(45)。
我使用的是 MySQL Cluster 7.3.3,有 4 个数据节点,它们都在同一个数据中心。
谁能建议为什么简单地添加一列需要 5 个小时?
表结构:
CREATE TABLE ddi_t (
id int(11) NOT NULL AUTO_INCREMENT,
ddi varchar(45) NOT NULL,
is_deleted tinyint(1) NOT NULL DEFAULT '0',
created_time datetime NOT NULL,
module_group_id int(11) DEFAULT NULL,
created_user_id int(11) DEFAULT NULL,
supplier_id int(11) DEFAULT '1',
PRIMARY KEY (id),
UNIQUE KEY uq_ddi_1 (ddi),
KEY fk_ddi_1_idx (module_group_id)
) ENGINE=ndbcluster AUTO_INCREMENT=935352 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)