我需要将数百万行插入 MySQL 数据库(InnoDB 引擎)。当桌子很大时,我有时间问题。几乎所有时间都花在插入查询上。也许有人知道如何优化它?
问问题
7979 次
2 回答
18
要将大量数据导入 InnoDB:
在 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
在事务开始后立即添加:
设置 FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
设置自动提交 = 0;
在交易结束前设置:
SET UNIQUE_CHECKS = 1;
设置 FOREIGN_KEY_CHECKS = 1;
于 2012-08-10T15:53:11.770 回答
0
如果您谈论大量INSERT
语句,请查看称为事务的东西。我很确定大多数(如果不是全部)执行 SQL 的语言都支持事务。他们将加快涉及写入数据库的任何事情。额外的好处是,如果出现问题,您可以回滚更改。
于 2012-08-10T15:27:01.180 回答