gpt4 book ai didi

node.js - Waterline/Sails.js 使用 MariaDB 进行批量插入和删除

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:48 24 4
gpt4 key购买 nike

在我的 Sails.js 应用程序中,我有一个表 auctions,其中包含截至上次转储从 Battle.net API 接收到的数据。 .

因此,每次 realm 的新转储到达时,我需要清除与该 realm 关联的所有行,然后插入较新的行。

我可以这样做:

  • 一次性(使用 destroy() 发送单个查询,并使用转储本身发送另一个查询);
  • 或者小批量(按item分组,然后用realm和`itemdestroy()销毁所有记录,然后插入新的)。

我目前正在使用 async.forEachOfSeries 进行此操作,如上所述,采用小批量处理,但以当前负载(每次运行作业时插入 45k 条记录)速度慢得难以忍受,而且不考虑我是否需要更新 item 工具提示记录。如果我尝试一次插入它们,要么 Node.js 开始分页并挂起,要么 MariaDB 花费的时间超过了 Waterline 允许的时间。

我怎样才能更有效地解决这个问题? async.queueasync.cargo 可以工作吗?

最佳答案

您要替换一个表中的所有行吗?这样做:

  1. 像真实一样创建新表;
  2. 使用新数据加载new
  3. 将表重命名为旧表,将新表重命名为实表;
  4. 删除旧表;

实现零停机交换。您无需担心 LOAD 的效率(步骤 2)。

(我将这个 MySQL/MariaDB 代码翻译成 sails.js 或其他内容作为练习留给读者。)

关于node.js - Waterline/Sails.js 使用 MariaDB 进行批量插入和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32388726/

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