gpt4 book ai didi

mysql - 提高mysql加载数据infile的性能

转载 作者:IT王子 更新时间:2023-10-28 23:49:29 25 4
gpt4 key购买 nike

我正在尝试使用 LOAD DATA INFILE(来自 CSV)将大约 12m 条记录批量加载到(本地)mysql 中的 InnoDB 表中,并发现它需要很长时间才能完成。

主键类型为 UUID,键在数据文件中未排序。

我已将数据文件拆分为包含 100000 条记录的文件并将其导入为:

mysql -e 'ALTER TABLE customer DISABLE KEYS;'
for file in *.csv
mysql -e "SET sql_log_bin=0;SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;
SET AUTOCOMMIT=0;LOAD DATA INFILE '${file}' INTO TABLE table
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; COMMIT"

这对于最初的几十万条记录运行良好,但随后每次加载的插入时间似乎一直在增长(在我杀死它之前,从每次加载大约 7 秒到大约 2 分钟。)

我在一台 8GB RAM 的机器上运行,并将 InnoDB 参数设置为:

innodb_buffer_pool_size =1024M
innodb_additional_mem_pool_size =512M
innodb_log_file_size = 256M
innodb_log_buffer_size = 256M

我还尝试加载包含所有行的单个 CSV,但没有成功 - 这在我杀死它之前运行了超过 2 小时。

还有什么可以加快这个速度,因为这似乎是一个过多的时间来只加载 12m 记录?

最佳答案

如果您知道数据是“干净的”,那么您可以在导入之前删除受影响表上的索引,然后在完成后重新添加它们。

否则,每条记录都会导致索引重新计算,如果您有一堆索引,这可能真的减慢速度。

关于mysql - 提高mysql加载数据infile的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com