小编Mic*_*ael的帖子

提高mysql加载数据infile的性能

我正在尝试使用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"
Run Code Online (Sandbox Code Playgroud)

这适用于前几十万个记录,但随后每个后续加载的插入时间似乎都在增长(从我杀死它之前每个负载大约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
Run Code Online (Sandbox Code Playgroud)

我还尝试加载一个包含所有行但没有运气的CSV - 这在我杀死它之前跑了超过2个小时.

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

mysql sql innodb bulk-load

10
推荐指数
2
解决办法
3859
查看次数

标签 统计

bulk-load ×1

innodb ×1

mysql ×1

sql ×1