利用MongoDB实现Ruby应用的高性能
1. MongoDB索引与性能调优
在MongoDB中,索引的使用对查询性能有着显著影响。使用 BtreeCursor 时,我们会发现 nscanned 和 nscannedObjects 存在巨大差异,这正是索引和性能调优的结果。不过有时会出现索引查询耗时比基本查询更长的情况,但这并不意味着没有优化性能。实际上,使用索引能让我们获取到数量少得多的对象子集,并且随着对象数量的增加,索引会变得越来越高效,还能减少查询时间。
1.1 覆盖索引的使用
覆盖索引指的是查询和获取的所有字段都已被索引。在这种情况下,索引查询的性能会非常出色,因为只需搜索索引,而无需搜索文档。由于索引体积较小,可以完全驻留在内存中,因此访问速度极快。
以下是测试覆盖索引性能的具体步骤:
1. 加载数据库并在高负载下进行查询。可以使用 fake_authors rake任务加载作者数据:
$ rake fake_authors
此操作会创建10000个以上的作者数据。
2. 执行索引查询:
> db.authors.find({name: /in/}).explain()
{
"cursor" : "BtreeCursor name_1 multi",
"nscanned" : 21
超级会员免费看
订阅专栏 解锁全文
966

被折叠的 条评论
为什么被折叠?



