MongoDB bulk.execute()在无序插入时花费了太多时间
MongoDB bulk.execute() taking too much time to insert unordered
我正试图用谷歌ngrams的arcs为mongoDB(3.2.4版)提供数据,但即使配置不错(MBP Mid 2014,2.2 GHz英特尔酷睿i7,16gb),也需要太多时间。
对于原始文件中890万行中的每一行,我都将doc
和bulk.insert(doc);
创建为无序的大容量。
在插入500个文档后,我执行bulk.execute()
并重复此过程,直到所有文档都添加到数据库中,这从未发生过,因为每千个文档需要一分钟以上的时间才能插入,而且我肯定没有8,9k分钟的时间等待。
代码来了:
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
//connected
console.log('Connection established to', url);
var bulk = db.collection('bigrams').initializeUnorderedBulkOp();
const rl = readline.createInterface({
input: fs.createReadStream(path+filename)
});
rl.on('line', function (line) {
var stringArray = line.split("'t");
var firstPart = stringArray[0]+''t'+stringArray[1]+''t'+stringArray[2]+"'t";
var head_token = stringArray[0];
var syntatic_ngram = stringArray[1].split(" ");
var total_count = stringArray[2];
var counts_by_year = line.replace(firstPart,'').split("'t");
var doc = {
"head token" : head_token,
"syntatic ngram" : syntatic_ngram,
"total count" : total_count,
"counts by year" : counts_by_year
};
count++;
bulkCount++;
if (bulkCount == bulkSize) {
console.log("BulkSize reached. Executing...");
bulk.execute();
bulkCount = 0;
}
console.log("bulk inserted count:"+count);
bulk.insert(doc);
});
rl.on('end', function(){
bulk.execute();
db.close();
});
}
});
附言:前10k次插入,即前20次bulk.execute()
是非常快的过程<1米。之后,处理时间会增加。):有什么建议吗?非常感谢。
我从mongoDB文档中得到了答案:"执行后,如果不重新初始化,就无法重新执行Bulk()对象。"
我刚刚在bulk.execute();
之后添加了bulk = db.collection('bigrams').initializeUnorderedBulkOp();
,插入时间是恒定的。几分钟后,所有内容都插入了。
希望这能帮助其他人。(:
相关文章:
- 门户网站:当地时间有多有用
- 一个html元素的克隆次数太多
- 在指定时间后多次调用Javascript中的函数
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- 使用.slice分页选择了太多项目
- 堆排序实现进行了太多比较
- 如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
- 如何修复“;太多递归”;ReactJS中的错误
- 为什么fs.readFile在windows上花费太多时间
- 如何避免webGL着色器加载给cpu带来太多负载
- node.js 需要太多的 TCP 套接字
- JavaScript循环迭代太多
- 函数崩溃,因为太多迭代jQuery
- 生成随机唯一数据的时间太长,占用了100%的CPU
- Jquery-append函数花费了太多时间
- 花了太多时间才做出承诺's则起作用
- MongoDB bulk.execute()在无序插入时花费了太多时间
- Jquery加载函数,如果花费太多时间,会出现错误信息
- 动态设置谷歌脚本时间驱动的计时器和太多的计时器错误在gmail
- ng重复渲染数据花费了太多时间