我需要将数百万行数据插入到MySQL数据库(InnoDB引擎)。当表格大小很大时,时间会成为问题。几乎所有的时间都用在插入查询上。也许有人知道如何优化它?
我需要将数百万行数据插入到MySQL数据库(InnoDB引擎)。当表格大小很大时,时间会成为问题。几乎所有的时间都用在插入查询上。也许有人知道如何优化它?
将大批量数据导入InnoDB:
在MySQL配置中设置
在事务开始后立即添加:
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;
在事务结束前进行设置:
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
sync_binlog
被设置为1
,请将其设置为0
(默认值为0
)。 - zogbylog_bin = 0
禁用了binlog,因此sync_binlog = 0
没有任何影响。 - c2h5ohinnodb_support_xa
不再可禁用。来自手册的说明:禁用 innodb_support_xa
不再被允许,因为它会使复制不安全,并阻止与二进制日志组提交相关的性能提升。 - gregglesINSERT
语句,可以考虑使用事务。我相信大多数(如果不是全部)支持 SQL 的编程语言都支持事务。使用事务可以加速任何涉及写入数据库的操作。另一个好处是,如果出现问题,你可以回滚更改。