快速更新大量数据

我已经在Nodejs中做了一个应用程序,每分钟调用一个端点并获取一个包含大约100000个元素的json数组。 我需要插入这个元素到我的数据库,如果该元素不存在,我插入列“点”值设置为0。

到目前为止,我有一个cron作业和简单的upsert查询。 但是这么慢,

var q = async.queue(function (data, done) { db.query('INSERT INTO stat(`user`, `user2`, `point`) '+data.values+' ON DUPLICATE KEY UPDATE point=point+ 10',function (err, result) { if (err) throw err; }); },100000); //Cron job here Every 1 minute execute the lines below: var values='' ; for (var v=0;v<stats.length;v++) { values = '("JACK","' + stats[v] + '", 0)'; q.push({values: values}); } 

我怎么能在很短的时间内完成这样的任务? 是使用mysql一个错误的决定? 我接受任何其他架构或解决scheme。 请注意,我必须每分钟都这样做。

我通过使用Bulk Upsert(从文档 )解决了这个问题! 我设法在不到3秒的时间内上传24k行。 基本上先创build查询然后运行它:

  INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);