我正在使用{{"A", "B", "C", "D"}}
填充具有以下结构的表:
LOAD DATA LOCAL INFILE
我在Google云上使用MySQL 5.7,在导入之前我禁用了binlog并将CREATE TABLE `player_talent` (
`player_id` int(10) unsigned NOT NULL,
`talent_id` int(10) unsigned NOT NULL,
`level` tinyint(4) NOT NULL,
PRIMARY KEY (`player_id`,`level`),
KEY `player_talent_talent_id_foreign` (`talent_id`),
CONSTRAINT `player_talent_player_id_foreign` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE,
CONSTRAINT `player_talent_talent_id_foreign` FOREIGN KEY (`talent_id`) REFERENCES `talents` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
,innodb_flush_log_at_trx_commit
和unique_checks
设置为0
以下是加载数据时使用的存储空间的样子:
IOPS始终处于最高位置。在上面的图像导入甚至没有完成。如果我删除所有索引,然后在导入后重新创建它们,这就是这个图形的样子:
导入阶段具有一致的线性性能。重新创建索引需要比导入更长的时间,但至少它会在合理的时间内完成。
有没有办法避免手动这样做?我认为foreign_key_checks
应该提供最好的表现。 InnoDB不支持LOAD DATA