gpt4 book ai didi

MySQL加载数据infile - 加速?

转载 作者:IT老高 更新时间:2023-10-28 23:43:46 27 4
gpt4 key购买 nike

有时,我必须为一个项目重新导入数据,从而将大约 360 万行读入 MySQL 表(目前是 InnoDB,但我实际上并不局限于这个引擎)。 “加载数据文件...”已被证明是最快的解决方案,但它有一个权衡:- 在没有 key 的情况下导入时,导入本身大约需要 45 秒,但创建 key 需要很长时间(已经运行了 20 分钟......)。- 使用表上的键进行导入会使导入速度变慢

表格的 3 个字段上有键,引用数字字段。有什么办法可以加快这个速度?

另一个问题是:当我终止启动慢查询的进程时,它继续在数据库上运行。有什么方法可以在不重启mysqld的情况下终止查询?

非常感谢DBa

最佳答案

如果您使用的是 innodb 和批量加载,这里有一些提示:

将您的 csv 文件排序为目标表的主键顺序:记住 innodb 使用聚集的主键,所以如果它被排序,它会加载得更快!

我使用的典型加载数据文件:

truncate <table>;

set autocommit = 0;

load data infile <path> into table <table>...

commit;

您可以用来增加加载时间的其他优化:

set unique_checks = 0;
set foreign_key_checks = 0;
set sql_log_bin=0;

将 csv 文件分割成更小的 block

我在批量装载期间观察到的典型进口统计数据:

3.5 - 6.5 million rows imported per min
210 - 400 million rows per hour

关于MySQL加载数据infile - 加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463602/

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