如何优化MySQL插入数百万行?

时间:2012-08-10 15:23:38

标签: mysql optimization insert

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

2 个答案:

答案 0 :(得分:15)

将大量数据导入InnoDB:

  1. 在MySQL配置中设置

    • innodb_doublewrite = 0
    • innodb_buffer_pool_size = 50%+系统内存
    • innodb_log_file_size = 512M
    • log-bin = 0
    • innodb_support_xa = 0
    • innodb_flush_log_at_trx_commit = 0
  2. 在交易开始后立即添加:

    SET FOREIGN_KEY_CHECKS = 0;

    SET UNIQUE_CHECKS = 0;

    SET AUTOCOMMIT = 0;

  3. 在交易结束前设置:

    SET UNIQUE_CHECKS = 1;

    SET FOREIGN_KEY_CHECKS = 1;

答案 1 :(得分:0)

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