草庐IT

perform_async

全部标签

performance - MongoDB 多键索引写入性能下降

在MongoDB中,我有一个包含文档的集合,该集合包含一个包含子文档的数组,我想在其上建立索引:{_id:ObjectId(),members:[{ref:ObjectId().str,...},{ref:ObjectId().str,...},...]}索引位于ref字段上,这样我就可以快速找到其成员中具有特定“ref”的所有文档:db.test.ensureIndex({"members.ref":1});我注意到,当数组长度超过几千时,将附加子文档推送到数组的性能会迅速下降。如果我改为对字符串数组使用索引,性能不会降低。以下代码演示了该行为:var_id=ObjectId("52

jquery - 使用 Node.js 和 async.queue 将大型 CSV 插入 MongoDB

我正在尝试将大型csv文件(100K行;10-100M+)上传并插入到mongo中。下面的代码是我用来接受来自表单的输入并首先将记录插入到我所有csv的元数据集合中,然后将csv的记录插入到它自己的集合中的路径。它适用于较小的文件(数千行),但当它达到50K+的顺序时会花费很长时间。下一个片段是将csv流用于较大的文件(见下文),但在尝试使用该流时出现错误。问题:有人可以帮助将第一个示例修改为流,以便它可以处理大型csv而不会挂起。exports.addCSV=function(req,res){varbody=req.body;fileSystem.renameSync(req.fi

node.js - NodeJS 加密 : re-use cipher object to improve performance

我想要nodejs和加密的MongoDB数据库。我担心性能。考虑以下用例:我有一个加密数据库,我从中检索加密字符串列表(例如名称)[_encrypted_name_1,_encrypted_name_2,...]我想解密该列表中的所有元素因为我很关心性能,所以我做了一些测试来解决这个问题。我观察到,与加密/解密非常大的字符串相比,加密/解密大量小字符串的速度非常慢。考虑以下示例:varcrypto=require('crypto'),_=require('lodash'),encryptedStringArray=[],decryptedStringArray=[],encrypted

异步函数async

什么是同步异步在最新的ES7(ES2017)中提出的前端异步特性:async、await。在了解async和await之前得先明白什么是同步函数,什么是异步函数。同步函数:当一个函数是同步执行时,那么当该函数被调用时不会立即返回,直到该函数所要做的事情全都做完了才返回。比如说在银行排队办理业务,要等到前面一个人办完才能到下一个。异步函数:如果一个异步函数被调用时,该函数会立即返回尽管该函数规定的操作任务还没有完成。比如一个人边吃饭,边看手机,边说话,就是异步处理的方式。asyncasync从字面意思上很好理解,是异步的意思,async用于申明一个function是异步的,函数返回的是一个pro

performance - MongoDB 3.0 上的 db.serverStatus() 中的 IndexCounter 在哪里

我看到idx在mongostat中错过了%但是当我运行时db.serverStatus().indexCounters没有回应。我在哪里可以找到这个?还有一个问题,我应该关注的适当页面错误值是多少? 最佳答案 indexCounters信息特定于MMAP存储,并不完全准确(有关某些示例,请参阅:SERVER-9296、SERVER-9284和SERVER-14583)。indexCounters部分在MongoDB3.0之前的开发周期中被删除,同时删除了一些其他以前的指标,如recordStats和workingSet。请参阅:SE

java - 如何在 Mongo Async Java Driver 上实现多线程?

我正在尝试在Spring应用程序(没有Spring数据)上实现Inserts/Second的高吞吐量。我尝试使用以下代码插入一百万个文档:Addressaddress=newAddress();address.setStreet1("");address.setStreet2("");address.setZipCode("");address.setId(1234);StopWatchstopWatch=newStopWatch();stopWatch.start();IntStream.iterate(0,i->i++).limit(1000000).parallel().forE

performance - MongoDB 索引 : object keys vs array of strings

我是MongoDB的新手,一直在研究模式设计和索引。我知道您可以索引一个属性,而不管它的值(ID、数组、子文档等),但我不知道索引字符串数组或嵌套对象的键是否有性能优势。这是我正在考虑的两种情况的示例(在Mongoose中)://schemamongoose.Schema({visibility:{usa:Boolean,europe:Boolean,other:Boolean}});//queryModel.find({"visibility.usa":true});或//schemamongoose.Schema({visibility:[String]//stringscould

performance - 按值查询更快

我想查询MongoDB以查找在results顶级文档中,有多少嵌套文档具有值0。例如,在这个集合中:{name:"mary",results:{"foo":0,"bar":8}}{name:"bob",results:{"baz":9,"qux":0}}{name:"leia",results:{"foo":9,"norf":5}}我的查询应该返回2,因为其中两个文档有0作为results的嵌套文档的值。这是我的尝试db.collection.find({$where:function(){for(varkeyinthis.results){if(this.results[key]==

node.js - 异步 : Combining two mongodb collection using Async. forEach

我是MEAN堆栈的新手,我正在尝试学习异步。我正在尝试使用async合并来自mongodb的两个集合并应用了这个iterateoveracollection,performanasynctaskforeachitem,我正在尝试学习完成这些简单任务的最简单有效的方法,以便它易于理解。varOrderSchema=newmongoose.Schema({menu_id:{type:mongoose.Schema.Types.ObjectId,ref:'Foods'},menu_name:{type:String,required:false},customer_id:{type:Stri

performance - mongodb 许多插入\更新性能

我正在使用mongodb来存储用户的事件,每个用户都有一个文档,其中包含一系列事件。系统每分钟处理数千个事件,并将每个事件插入到mongo。问题是我的更新操作性能不佳,使用分析器,我注意到WriteResult.getError是导致性能影响的那个。这是有道理的,更新是异步的,但是如果要检索操作结果,他需要等到操作完成。我的问题是,有没有办法保持更新异步,但只有在发生错误时才会出现异常(99.999次没有错误,所以系统什么都不等待)。我知道这意味着异常将在流程中更靠后的某个地方引发,但我可以接受。还有什么建议吗?该应用程序是用Java编写的,因此我们使用的是Java驱动程序,但我不确定