7

我需要将数百万行插入 MySQL 数据库(InnoDB 引擎)。当桌子很大时,我有时间问题。几乎所有时间都花在插入查询上。也许有人知道如何优化它?

4

2 回答 2

18

要将大量数据导入 InnoDB:

  1. 在 MySQL 配置中设置

    • innodb_doublewrite = 0
    • innodb_buffer_pool_size = 50%+ 系统内存
    • innodb_log_file_size = 512M
    • 日志箱 = 0
    • innodb_support_xa = 0
    • innodb_flush_log_at_trx_commit = 0
  2. 在事务开始后立即添加:

    设置 FOREIGN_KEY_CHECKS = 0;

    SET UNIQUE_CHECKS = 0;

    设置自动提交 = 0;

  3. 在交易结束前设置:

    SET UNIQUE_CHECKS = 1;

    设置 FOREIGN_KEY_CHECKS = 1;

于 2012-08-10T15:53:11.770 回答
0

如果您谈论大量INSERT语句,请查看称为事务的东西。我很确定大多数(如果不是全部)执行 SQL 的语言都支持事务。他们将加快涉及写入数据库的任何事情。额外的好处是,如果出现问题,您可以回滚更改。

于 2012-08-10T15:27:01.180 回答