本文档解决了有关MongoDB 索引的一些常见问题 。有关索引的更多信息,请参阅 索引。
要在集合上创建索引,请使用 db.collection.createIndex()方法。创建索引是一种管理性操作。通常,应用程序不应该定期的调用db.collection.createIndex()。
注意:
索引构建会影响性能; 请参阅 索引构建会如何影响数据库性能?。管理员应在构建索引之前考虑性能影响。
在集合上构建索引时(译者注:前台创建时),保存集合的数据库在索引构建完成前都不可进行读取或写入操作。如果需要构建一个很大的索引,请考虑在后台(background)构建索引。请参阅 对已填充数据的集合进行索引构建操作和 在副本集上构建索引。
要返回当前正在运行的索引创建操作的相关信息,请参阅Active Indexing Operations。要终止正在运行的索引创建操作,请参阅db.killOp()。部分构建的索引将被删除。
要列出集合的索引,请使用 db.collection.getIndexes()方法
许多因素决定了要索引的字段,包括 选择性,对多个查询的支持以及索引的大小。更多信息,请参阅 索引策略和 索引操作注意事项。
db.collection.stats()结果包括一个indexSizes子文档,它提供了集合中每个索引的大小信息。
根据其大小,一个索引可能无法放入内存。当服务器有足够的内存用于索引和工作集的其余部分时,索引将加载进内存 。当索引太大而无法放入内存时,MongoDB必须从磁盘读取索引,这比从内存读取的操作要慢得多。
在某些情况下,索引不需要完全放入内存。有关详细信息,请参阅仅在内存中保留索引最近使用的值。
写操作可能需要更新索引:
因此,如果您的应用程序写入量大,索引可能会影响性能。
译者
钟秋
BBD技术经理,资深架构师,MongoDB中文社区联席主席
有丰富项目中应用MongoDB经验,熟悉MongoDB相互模式设计及性能优化,熟悉大数据相关技术和互联网及大数据应用架构设计
本文分享自 Mongoing中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!