CNode

求助关于大循环插入数据的问题。

Hhades发布于13 年前最后回复13 年前8 回复4586 浏览0 收藏

项目这要求大批量的插入数据。 for(var i = 0; i < 1000000; i++){ process.nextTick(function () { var user = {}; user.name = 'outmem'; user.pass = '123456'; user.email = 'outmem@outmem.com'; save(....); }); } 几百条时还能正常插入,循环量一大程序就插不进数据了。

查看回复

回复 (8)

D
dengqiao#1·13 年前

哥哥process.nextTick不是随便用的啊,考虑使用async模块的whilst函数控制一下

H
hades#2·13 年前

@dengqiao 那这一百万条数据要怎么插入数据库比较好。

H
hades#4·13 年前
引用 hades@dengqiao 那这一百万条数据要怎么插入数据库比较好。

@youxiachai 是否有例子可以参考一下?

L
leapon#5·13 年前

我的一个数据库更新的例子:

        async.forEachSeries(docs, processBuilding, function(){
            console.log('buildings done:', docs.length);
            process.exit();
        });
D
dengqiao#6·13 年前
引用 hades@dengqiao 那这一百万条数据要怎么插入数据库比较好。

批量插入,每次插入100条哈哈,这个100是我经常用的,你自己选择,不要太大,不要太小

H
hades#7·13 年前

@.@看来还是得麻烦些,重头来过。

1、数组不能太大, 2、循环不能太大,

S
softice#8·13 年前

用回调吧,等插入完成后再插入接下来的,或者用setTimeout()来循环。手边有一个项目就是这样用的。

参与回复
登录后即可参与回复。登录