草庐IT

Performance_Scripts

全部标签

performance - 如何在 MongoDB 中关闭(临时)索引

是否可以暂停MongoDB中的索引维护以提高插入速度并在之后打开(或重建)索引?根据文档,在ensureIndex()之后,该索引在所有后续插入和更新期间都得到维护。 最佳答案 索引与插入/更新同步更新。所以没有办法“暂停”这个。如果您预期大批量插入,您可以删除索引,执行插入,然后重建索引。当然,这有一些含义:在您插入数据时,您的查询会因缺少索引而受到影响。索引重建在消耗CPU和无效缓存方面可能过于昂贵(如果您有大量数据) 关于performance-如何在MongoDB中关闭(临时)索

performance - MongoDB 将文档预加载到 RAM 中以获得更好的性能

我希望MongoDB将查询结果保存在RAM中更长时间(如果内存可用,则说30分钟)。可能吗?或者有什么方法可以确保在后续查询之前将数据预加载到RAM中。事实上,我想知道MongoDB的简单查询结果性能。我有一个10GBRAM的专用服务器,我的db.stats()如下;db.stats();{"db":"test","collections":16,"objects":625690,"avgObjSize":68.90,"dataSize":43061996,"storageSize":1121402888,"numExtents":74,"indexes":25,"indexSize"

performance - mongo 中的 bulk.find.update() 与 update.collection(multi=true)

我是mongodb的新手,想在拥有数百万条记录的项目中实现mongodb。想知道我应该更喜欢update-bulk.find.update()与update.collection与multi=true的性能. 最佳答案 据我所知,Bulk提供的最大yield是:批量操作对于批量中的所有请求仅向MongoDB发送一个请求。其他人发送每个文档的请求或仅发送来自insert、update、updateOne、upsert之一的一种操作类型>带有update操作和remove.Bulk可以在代码页的不同行处理许多不同的情况。批量操作可以异步

performance - MongoDB:双字段索引与文档字段索引

我需要通过两个字段(唯一索引)对集合进行索引,例如field1和field2。在性能方面有什么更好的方法:创建一个常规的两列索引-或-将这两个字段合并到一个文档字段{field1:value,field2:value2}并索引该字段?注意:我将始终同时通过这两个字段进行查询。 最佳答案 您可以将列分开并创建一个索引,以提高同时查询两个字段时的性能。db.things.ensureIndex({field1:1,field2:1});http://www.mongodb.org/display/DOCS/Indexes#Indexes

performance - MongoDB文本索引搜索大表中的常用词很慢

我正在为一项服务托管一个mongodb数据库,该服务支持对包含680万条记录的集合进行全文搜索。它的文本索引包括十个不同权重的字段。大多数搜索不到一秒钟。有些搜索需要两到三秒钟。但是,有些搜索需要15-60秒!我的申请无法接受15-60秒的搜索案例。我需要找到一种方法来加快这些速度。当在搜索查询中使用索引中非常常见的词时,搜索需要15-60秒。我好像文本搜索功能不支持惰性参数。我的第一个想法是在我的文本索引中缓存50个最常见单词的列表,然后让mongodb评估那些最后(惰性)并在不太常见的参数返回的过滤结果之上。希望人们还在我身边。例如,假设我有一个查询“产品巧克力”,其中产品是常见的

performance - MongoDB 查找和删除 - 最快的方法

我有一个简单的问题,从mongo集合中抓取和删除对象的快速方法是什么。这是代码,我目前有:$cursor=$coll->find()->sort(array('created'=>1))->limit(1);$obj=$cursor->getNext();$coll->remove(array('name'=>$obj['name']));正如您在上面看到的,它从数据库中抓取一个文档并将其删除(因此不会再次处理它)。无论这可能有多快,我都需要它更快地执行。挑战在于,我们有多个进程在执行此操作并处理他们发现的内容,但有时两个或多个进程会抓取同一个文档,因此会产生重复。基本上我需要这样做,

performance - MongoDB 中大型集合的批量插入性能

我正在使用BulkWriteOperation(java驱动程序)以大块的形式存储数据。起初它似乎工作得很好,但是当集合变大时,插入可能会花费很多时间。目前对于20M文档的集合,批量插入1000个文档可能需要大约10秒。有没有办法让插入独立于集合大小?我没有任何更新或更新,我插入的始终是新数据。从日志来看,锁似乎没有任何问题。每个文档都有一个索引的时间字段,但它是线性增长的,所以我认为mongo不需要花时间重新组织索引。我很想听听一些提高性能的想法谢谢 最佳答案 您认为索引不需要任何documentreorganisation并且您

performance - javascript shell 与 pymongo 中 db.eval() 的 MongoDB 性能

我需要对需要在数组中旋转一些值的文档执行更新操作。MongoDB更新查询目前不允许您在更新中对同一字段进行$pop然后$push。在网上搜索建议后,我决定db.eval()最适合我的使用,因为它确保原子性并且我正在执行的操作非常短,因此不会锁定数据库太久了。这是我正在尝试做的事情的一个例子:db.eval(function(id,newVal){doc=db.collection.findOne({_id:id});doc.values.shift();doc.values.push(newVal);db.collection.save(doc);},id,newVal);这非常有效!

performance - MongoDB限制内存

我正在使用mongo来存储日志文件。mongoDB和mysql都在同一台机器上运行,虚拟化mongoenv不是一个选项。恐怕我很快就会遇到性能问题,因为日志表增长得非常快。有没有办法限制mongo的常驻内存,这样它就不会吃掉所有可用内存并过度减慢mysql服务器的速度?数据库机器:Debian'lenny'5其他解决方案(请评论):由于我们需要所有历史数据,我们不能使用上限集合,但我也在考虑使用转储和删除旧数据的cron脚本我是否也应该按照其他论坛的建议考虑使用较小的key? 最佳答案 嘿,Vlad,您在这里有一些关于日志的简单策略

performance - 如何在 mongodb 中查找不使用索引或速度慢的查询

有没有办法在mongodb中查找不使用索引或速度较慢的查询?在MySQL中,可以通过配置文件中的以下设置:log-queries-not-using-indexes=1log_slow_queries=/tmp/slowmysql.log 最佳答案 MongoDB中的等效方法是使用queryprofiler跟踪和诊断慢查询。为数据库启用分析后,慢速操作将写入system.profile上限集合(默认大小为1Mb)。您可以使用slowmsparameter调整慢速操作的阈值(默认为100毫秒)。.