mysql如何更快地插入数百万条记录? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何更快地插入数百万条记录? [关闭]相关的知识,希望对你有一定的参考价值。

我想在我的数据库中插入大约数百万条记录,但它速度非常慢,速度大约为40,000条记录/小时,我不认为我的硬件速度太慢,因为我看到磁盘的速度低于2 MiB / s。我有很多表分隔在不同的.sql文件中。一条记录也非常简单,一条记录少于15列,一列少于30个字符。我使用mysql 5.3在archlinux下完成了这项工作。你们有什么想法吗?或者这个速度不慢?

答案

这很可能是因为你要插入这样的记录:

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");

每次你需要INSERT发送一个新的查询是坏事。而是简单地将所有这些查询组合成一个单独的查询,就像这样。

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2");

您还可以在qazxsw poi中阅读有关插入速度的更多信息。它清楚地描述了以下内容。

要优化插入速度,请将许多小型操作组合到一个大型操作中。理想情况下,您进行单个连接,一次发送许多新行的数据,并将所有索引更新和一致性检查延迟到最后。

如果金额巨大,当然不要将所有这些组合在一起。假设您需要插入1000行,然后不要一次执行一行。但是你可能不应该同时尝试在一个查询中拥有所有1000行。而是将其分解为更小的尺寸。

如果它仍然很慢,那可能只是因为你的服务器很慢。

请注意,您当然不需要在组合查询中使用所有这些空格,这只是为了更好地概述答案。

以上是关于mysql如何更快地插入数百万条记录? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

优化插入数百万条记录,MySQL 和 PHP

在具有数百万条记录的 2 个表上加入更快

如何使用 Talend Open Studio 处理数百万条 MongoDB 记录并将其插入 Postgres

删除数百万条记录 oracle [关闭]

将数百万条记录从平面文件插入 SQL Server 的陷阱是啥?

使用 hive sql 批量插入数百万条记录到 hive?