7

我想加快数据加载速度。

我使用 MySQL 5.5、InnoDB 并有 1M 行数据(65Mb 文件)。需要 5 分钟。

哪些 mysql 设置和命令会影响 InnoDB 的 LOAD DATA INFILE 速度?

谢谢你。

4

5 回答 5

20

我可以推荐这些设置来缩短加载时间:

  • innodb_doublewrite = 0
  • innodb_support_xa = 0
  • innodb_buffer_pool_size = (50-80% 的系统内存)
  • innodb_log_file_size =(一个大数字 - 256M 等)
  • innodb_flush_log_at_trx_commit = 0

除了设置,您还可以自己做一些事情:

  • 加载后创建索引(这是 5.5 / InnoDB 插件的新优化)。
  • 加载前对数据文件进行排序。
  • 拆分数据文件,并并行加载。
于 2011-02-19T20:30:18.350 回答
4

尝试删除索引和触发器。您可以在加载后重新创建它们。还要考虑使用 my-huge.cnf 中的一些高负载设置而不是默认设置。

更多 innodb 性能设置:

http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/

于 2011-02-16T19:16:00.647 回答
2

这可能不是您正在寻找的东西,但这是我过去使用过的一个技巧

ALTER TABLE TABLE_NAME DISABLE KEYS;
LOAD DATA INFILE ... ;
ALTER TABLE TABLE_NAME ENABLE KEYS;

希望能帮助到你。

于 2011-02-16T19:25:29.833 回答
0

如果可能,还要确保禁用二进制日志记录。

于 2015-01-16T18:30:29.643 回答
0

如果您因为要替换活动表的内容而赶时间,请改为这样做:

CREATE TABLE new LIKE live;
LOAD DATA ... INTO new;
RENAME TABLE live TO old, new TO live;
DROP TABLE old;

RENAME是“即时的”和原子的,因此无论表大小如何,您都“永远不会”失败。

(因此您不必担心加速LOAD.)

于 2015-12-05T00:54:26.130 回答