1

我需要将六亿五千万(650000000)条记录插入到一​​个表中。我尝试过扩展插入LOAD DATA LOCAL INFILE方法。

扩展插入结果:

我已经拆分了数据,每个扩展插入都包含 1250000。我面临的问题是每批都逐渐增加了执行时间。

Batch 1 completed in 40s
Batch 2 completed in 50s
Batch 3 completed in 60s
Batch 4 completed in 80s
Batch 5 completed in 100s

完成需要15-20个小时。

加载 DATA LOCAL INFILE 结果

我有一个 40G 的 CSV 文件,我将它分成 500 个文件。然后我将它加载到Mysql中。这里我也面临同样的问题,每个文件加载都会增加执行时间。

在此处输入图像描述

表结构供您参考:

在此处输入图像描述

如果这是预期的行为,有没有其他方法可以快速导入数据?

4

1 回答 1

0

对数据进行排序PRIMARY KEY。使用 sort 命令对 40GB 文件进行排序可能比让 MySQL 进行排序要快。

设置innodb_buffer_pool_size为可用 RAM 的 70% 左右。你有多少内存?

已经PRIMARY KEY建立在桌子上。

没有任何二级索引FOREIGN KEYs或触发器。稍后添加它们。是的,这需要时间。

确认您确实需要所有这些索引。

通过选择小于 10-byte 的 数据可以略微缩小数据DECIMAL(20,6)

于 2021-07-07T07:41:02.043 回答