专栏首页MongoDB中文社区常见问题:索引

常见问题:索引

本文档解决了有关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会将文档移动到新记录并更新引用该文档的所有索引,而不管修改的是什么字段。

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

译者

钟秋

BBD技术经理,资深架构师,MongoDB中文社区联席主席

有丰富项目中应用MongoDB经验,熟悉MongoDB相互模式设计及性能优化,熟悉大数据相关技术和互联网及大数据应用架构设计

本文分享自微信公众号 - Mongoing中文社区(mongoing-mongoing)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2019年初,一次Confluence迁移升级历程

    随着时间的推移 用户量不断增长 数据量也越来越大 Confluence最初安装使用的是内存数据库 由于这个技术债务 所需的资源(尤其是内存)越来越大 ...

    donghui
  • 简析 Jenkins 专有用户数据库加密算法

    其中,安全域可以采用三种形式,分别为:Jenkins 专有用户数据库、LDAP、Servlet 容器代理。

    LinuxSuRen
  • Rainbond 5.1.3发布,快速部署和运维spring cloud集群

    今天为大家带来Rainbond 5.1系列第三个更新版本,本次版本更新的关键是降低Rainbond学习门槛,我们不仅增加了新用户指导任务来指引用户学习Rainb...

    Rainbond开源
  • Confluence 6 计划你的升级

    使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本。

    HoneyMoose
  • Reviewboard时区问题 原

    在创建ReviewBoard站点后发现,Reviewboard时区默认为UTC(服务器时区为+8区,即东八区)

    donghui
  • 好雨云帮每周更新日志(2017.02.27-2017.03.12)

    Rainbond开源
  • 大数据 | SparkSQL连接查询中的谓词下推处理(二)

    在《SparkSql连接查询中的谓词下推处理(一)》中,我们介绍了一些基本的概念,并对内连接查询时的一些基本下推规则进行了分析。

    杨振涛
  • 【Rainbond最佳实践】Spring Boot框架配置MySQL

    Spring Boot框架简化了新Spring应用的初始搭建以及开发过程,云帮支持平台部署Spring Boot类应用。

    Rainbond开源
  • Confluence 6 在升级之前

    在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。

    HoneyMoose
  • 开源Rainbond发布v3.4.2更新:应用插件体系进入beta版本

    3、 页面刷新后会在当前租户当前数据中心自动安装上两个Rainbond提供的插件

    Rainbond开源

扫码关注云+社区

领取腾讯云代金券