我的服务器接收数据并应插入或更新现有数据库表。我的问题是数据量巨大,收到数千条记录,一条一条写入可能需要几个小时。有没有办法优化写作?我还应该说,每次写入之前都会有一个查询来检查记录是否已在数据库中。
目前,我使用带有 TTL 的缓存来跳过重复记录。我还使用信号量来防止一次过多的数据库写入请求(可能会引发超时错误)。
最佳答案
- 聚集一百行,构建多行
INSERT
并执行它。 (加速 10 倍) - 放入 100 1 行
INSERTs
里面BEGIN
..COMMIT
。 (加速 10 倍) - 检查您是否没有任何未使用的索引。 (从长远来看避免陷入困境)
提供SHOW CREATE TABLE
;我可能还有更多建议。
duplicate
是什么意思?记录?所有列都相同吗?只是一些UNIQUE
列是一样的吗?这里可能有一些技巧可以提供帮助。
即使没有上述建议,逐一插入 1000 行也不会超过 10 秒。这个过程还涉及其他一些事情;请详细说明。
关于mysql - 要插入数据库的数千条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379373/