mysql - 要插入数据库的数千条记录

标签 mysql node.js database optimization

我的服务器接收数据并应插入或更新现有数据库表。我的问题是数据量巨大,收到数千条记录,一条一条写入可能需要几个小时。有没有办法优化写作?我还应该说,每次写入之前都会有一个查询来检查记录是否已在数据库中。

目前,我使用带有 TTL 的缓存来跳过重复记录。我还使用信号量来防止一次过多的数据库写入请求(可能会引发超时错误)。

最佳答案

  • 聚集一百行,构建多行 INSERT并执行它。 (加速 10 倍)
  • 放入 100 1 行 INSERTs里面BEGIN ..COMMIT 。 (加速 10 倍)
  • 检查您是否没有任何未使用的索引。 (从长远来看避免陷入困境)

提供SHOW CREATE TABLE ;我可能还有更多建议。

duplicate 是什么意思?记录?所有列都相同吗?只是一些UNIQUE列是一样的吗?这里可能有一些技巧可以提供帮助。

即使没有上述建议,逐一插入 1000 行也不会超过 10 秒。这个过程还涉及其他一些事情;请详细说明。

关于mysql - 要插入数据库的数千条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379373/

相关文章:

node.js - 获取数据库插入错误

MySQL网络客户事件分析问题

php - 在mysql之前定义的变量中插入数据

mysql - 为什么mysql innodb改变表结构时可以更新数据?

javascript - 仅当第一个 promise 没有返回良好结果时才执行其他 promise

database - 创建时的 H2 数据库主键

sql-server - 在 Microsoft SQL Server 2008 上以十六进制 (0x000000000000000866) 显示的时间戳字段中的值

mysql - 可以通过 PHPMyAdmin 访问 MySQL,但不能通过命令行访问

MySQL Decimal 不同位数的查询效率

javascript - 为什么 Promise.all 中的 promise 仍然未决?