gpt4 book ai didi

mysql - mysql如何更快地插入百万条记录?

转载 作者:IT老高 更新时间:2023-10-28 23:52:22 25 4
gpt4 key购买 nike

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

最佳答案

这很可能是因为您正在插入这样的记录:

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");

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

To optimize insert speed, combine many small operations into a single large operation. Ideally, you make a single connection, send the data for many new rows at once, and delay all index updates and consistency checking until the very end.

当然,如果数量巨大,请不要将它们全部合并。假设您需要插入 1000 行,那么不要一次插入一行。但是您可能不应该同样尝试在单个查询中包含所有 1000 行。而是将其分解成更小的尺寸。

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

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

关于mysql - mysql如何更快地插入百万条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com