暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文] 如何优化 MySQL 中慢速的 INSERT 查询

原创 Oded Valin 2021-07-30
2333

在某些时候,我们的许多客户需要处理大型数据集的插入并遇到缓慢的插入语句。本文将尝试就如何加快慢速 INSERT SQL 查询提供一些指导。

以下建议可能有助于优化您的数据加载操作:

  1. 删除现有索引

一旦添加越来越多的索引,向 MySQL 表插入数据的速度将会变慢。因此,如果您要将数据加载到新表中,最好将其加载到没有 任何索引的表中,然后在加载数据后才创建索引。

当您插入记录时,数据库需要在每次插入时更新索引,这在性能方面代价高昂。插入所有记录而不索引它们,然后为整个表创建一次索引要快得多。

  1. 批量插入数据

为了优化插入速度,将许多小操作合并为一个大操作。理想情况下,您建立一个连接,一次发送许多新行的数据,并将所有索引更新和一致性检查延迟到最后。实际上,您可以使用以下查询结构插入记录组,例如在每个 INSERT 语句中插入 1000 条记录,而不是一次对一条记录执行 INSERT:

INSERT INTO table_name (column_list) VALUES (value1, value2) (value1, value2), ... (value1, value2);
  1. 从附近位置加载数据

如果您将千兆字节或 TB 的数据加载到远程服务器,请记住,无论实际将记录插入数据库需要多长时间,您的 SQL 客户端都需要将该数据传输到该服务器服务器。因此,网络可能是一个重要的瓶颈。此外,对于大型 SQL 转储,在每个插入(或一组插入)上打开和关闭连接可能会占用大量时间。
因此,理想情况下,您应该将文件传输到数据库服务器一次,然后从本地文件系统加载它。

  1. 加载数据填充

如果您从 CSV/TSV 加载数据,您应该尝试使用 LOAD DATA INFILE 加载它,而不是使用 INSERT 语句。该语句由 MySQL 优化以获得最佳数据加载性能。

最后修改时间:2021-07-30 17:55:26
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论