mysql 如何更好的给一个千万级数据量的表增加一个字段。
表结果如下:
CREATE TABLE `test` (
`name` INT(20) NOT NULL,
`b` VARCHAR(50) DEFAULT NULL,
`c` INT(11) NOT NULL DEFAULT '0',
`d` INT(11) DEFAULT '0',
`e` VARCHAR(20) CHARACTER SET utf8 DEFAULT NULL,
`f` VARCHAR(100) CHARACTER SET utf8 DEFAULT '',
`g` TINYINT(4) DEFAULT '0',
`username` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`i` VARCHAR(8) DEFAULT 'unknown',
`j` TINYINT(4) DEFAULT '0',
PRIMARY KEY (`name`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4
数据量:1500万左右
目前我的做法是:
1、重新建一张新表tmp_test,把test表的数据copy到新表tmp_test里,然后给新表加上主键,唯一索引。
2、rename表名,切换业务。(将test改为test_bak,将tmp_test改为test)
3、由于原test表不停的有数据的insert 和update操作,所以把第一步执行过程中原test表insert和update变动的数据,更新到新test表。
大家来看看,还有没有什么更好的办法。