MongoDB常见问题——索引

如何创建索引?

要在集合上创建索引,请使用 db.collection.createIndex()方法。创建索引是一种管理性操作。通常,应用程序不应该定期的调用db.collection.createIndex()

注意:

索引构建会影响性能; 请参阅 索引构建会如何影响数据库性能?。管理员应在构建索引之前考虑性能影响。

索引构建会如何影响数据库性能?

在集合上构建索引时(译者注:前台创建时),保存集合的数据库在索引构建完成前都不可进行读取或写入操作。如果需要构建一个很大的索引,请考虑在后台(background)构建索引。请参阅 对已填充数据的集合进行索引构建操作在副本集上构建索引

要返回当前正在运行的索引创建操作的相关信息,请参阅Active Indexing Operations。要终止正在运行的索引创建操作,请参阅db.killOp()。部分构建的索引将被删除。

如何查看集合中存在哪些索引?

要列出集合的索引,请使用 db.collection.getIndexes()方法

如何查看查询是否使用了索引?

要探查MongoDB如何处理查询,请使用 explain()方法。

如何确定要索引的字段?

许多因素决定了要索引的字段,包括 选择性,对多个查询的支持以及索引的大小。更多信息,请参阅 索引策略索引操作注意事项

如何查看索引的大小?

db.collection.stats()结果包括一个indexSizes子文档,它提供了集合中每个索引的大小信息。

根据其大小,一个索引可能无法放入内存。当服务器有足够的内存用于索引和工作集的其余部分时,索引将加载进内存 。当索引太大而无法放入内存时,MongoDB必须从磁盘读取索引,这比从内存读取的操作要慢得多。

在某些情况下,索引不需要完全放入内存。有关详细信息,请参阅仅在内存中保留索引最近使用的值。

写操作如何影响索引?

写操作可能需要更新索引:

  • 如果写入操作修改了索引相关字段,MongoDB将更新所有键中包含该字段的索引。
  • 当使用MMAPv1存储引擎运行时,如果对文档的更新导致文档增长超过其分配的记录大小,MongoDB会将文档移动到新记录并更新引用该文档的所有索引,而不管修改的是什么字段。

因此,如果您的应用程序写入量大,索引可能会影响性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值