Mysql 节点-对于数据库工作内存不足的循环来说是大的

Mysql 节点-对于数据库工作内存不足的循环来说是大的,mysql,node.js,database,for-loop,out-of-memory,Mysql,Node.js,Database,For Loop,Out Of Memory,所以,在生成所有数据之后,我需要将大量数据放入数据库中。现在,无论我是在生成数据时还是之后尝试这样做,都无关紧要。它双向崩溃 我有这样的代码: for(var i = 0; i<4000, i++){ for(var z = 0; z<1000; z++){ c.query("REPLACE INTO `"+i+"`VALUES ("+z+", "+data+",)", function (err){ if(err){

所以,在生成所有数据之后,我需要将大量数据放入数据库中。现在,无论我是在生成数据时还是之后尝试这样做,都无关紧要。它双向崩溃

我有这样的代码:

for(var i = 0; i<4000, i++){
    for(var z = 0; z<1000; z++){
        c.query("REPLACE INTO `"+i+"`VALUES ("+z+", "+data+",)", function (err){
            if(err){
                throw err;
            }
        });
    }
}

我试图延迟回调,但没有成功

根据我对这个问题的理解:

c.query()
是一种异步方法。 我将使用(或
async.eachLimit
)循环

或者,您可以使用Promise或async/await

编辑:

更改了调用
innerCallback
的位置

async.eachOfSeries(chunk, function(item, key, outerCallback){
    async.eachOfSeries(item, function(value, slot, innerCallback){
        //console.log(slot);
        c.query("REPLACE INTO `"+key+"` (r, v) VALUES ("+slot+", "+value+")", function(err){
            if(err){
                throw err;
            }
            innerCallback(); // Add callback here
        });
        // innerCallback(); // Remove this call
    }, function(err){
        outerCallback();
    });
}, function(err){
    callback();
});

当它被杀死时,请出示日志。还有什么是
c
?您使用的是哪个模块?@sangsharsh没有错误。只是“killed”,我知道它内存不足的唯一原因是在每个循环中记录内存信息。它是节点的mariadb。这绝对是正确的方向。然而,我不断得到“超过最大调用堆栈大小”,我看不出是什么原因造成的。查看主要帖子中的编辑:)@SangharshSee Async[docs]()中的“常见陷阱-->同步迭代函数”谢谢!这最终解决了调用大小错误,但是我的内存仍然不足!在外循环大约500次迭代时,我的内存用完了。如图所示,我正在记录进程。服务器很弱,但应该能够处理此问题@sangharshYes,速度会慢一些。在这里,我们正在等待一个
query()
完成,然后再调用另一种方法。在代码的第一个版本中,所有4000*1000查询调用都是同时进行的。在内环中尝试
eachoffimit
,它应该会提供更好的速度。玩一玩。我通常在10到50之间使用,但没有具体的原因。
async.eachOfSeries(chunk, function(item, key, outerCallback){
    async.eachOfSeries(item, function(value, slot, innerCallback){
        //console.log(slot);
        c.query("REPLACE INTO `"+key+"` (r, v) VALUES ("+slot+", "+value+")", function(err){
            if(err){
                throw err;
            }
            innerCallback(); // Add callback here
        });
        // innerCallback(); // Remove this call
    }, function(err){
        outerCallback();
    });
}, function(err){
    callback();
});