- MongoDB官方文档中文版
- MongoDB中文手册说明
- MongoDB简介
- 安装 MongoDB
- The mongo Shell
- MongoDB CRUD 操作
- 聚合
- 数据模型
- 事务
- 索引
- 安全
- 安全检查列表
- 启用访问控制
- 身份验证
- 基于角色的访问控制
- TLS / SSL(传输加密)
- 静态加密
- 客户端字段级加密
- 审计
- 网络和配置强化
- 实现字段级别修订
- 安全参考
- 附录
- 变更流
- 复制
- 分片
- 分片键
- 哈希分片
- 范围分片
- 区
- 管理分片区
- 按位置细分数据
- 用于更改SLA或SLO的分层硬件
- 按应用或客户细分数据
- 仅插入工作负载的分布式本地写入
- 管理分片区
- 使用块进行数据分区
- 在分片集群中拆分数据块
- 管理
- 存储
- 存储引擎
- 日志记录
- 管理日志记录
- GridFS
- FAQ:MongoDB 存储
- 存储引擎
- 参考
- 运算符
- 查询与映射运算符
- 更新运算符
- 聚合管道阶段
- 聚合管道操作符
- $abs (aggregation)
- $acos (aggregation)
- $acosh (aggregation)
- $add (aggregation)
- $addToSet (aggregation)
- $allElementsTrue (aggregation)
- $and (aggregation)
- $anyElementTrue (aggregation)
- $arrayElemAt (aggregation)
- $arrayToObject (aggregation)
- $asin (aggregation)
- $asinh (aggregation)
- $atan (aggregation)
- $atan2 (aggregation)
- $atanh (aggregation)
- $avg (aggregation)
- $ceil (aggregation)
- $cmp (aggregation)
- $concat (aggregation)
- $concatArrays (aggregation)
- $cond (aggregation)
- $convert (aggregation)
- $cos (aggregation)
- $dateFromParts (aggregation)
- $dateToParts (aggregation)
- $dateFromString (aggregation)
- $literal (aggregation)
- 查询修饰符
- 数据库命令
- 聚合命令
- 地理空间命令
- 查询和写操作命令
- 查询计划缓存命令
- 认证命令
- 用户管理命令
- 角色管理命令
- 复制命令
- 分片命令
- 会话命令
- 管理命令
- 诊断命令
- 免费监控命令
- 系统事件审计命令
- mongo Shell 方法
- 集合方法
- db.collection.aggregate()
- db.collection.bulkWrite()
- db.collection.copyTo()
- db.collection.count()
- db.collection.countDocuments()
- db.collection.estimatedDocumentCount()
- db.collection.createIndex()
- db.collection.createIndexes()
- db.collection.dataSize()
- db.collection.deleteOne()
- db.collection.deleteMany()
- db.collection.distinct()
- db.collection.drop()
- db.collection.dropIndex()
- db.collection.dropIndexes()
- db.collection.ensureIndex()
- db.collection.explain()
- db.collection.find()
- db.collection.findAndModify()
- db.collection.findOne()
- db.collection.findOneAndDelete()
- db.collection.findOneAndReplace()
- db.collection.findOneAndUpdate()
- db.collection.getIndexes()
- db.collection.getShardDistribution()
- db.collection.getShardVersion()
- db.collection.insert()
- db.collection.insertOne()
- db.collection.insertMany()
- db.collection.isCapped()
- db.collection.latencyStats()
- db.collection.mapReduce()
- db.collection.reIndex()
- db.collection.remove()
- db.collection.renameCollection()
- db.collection.replaceOne()
- db.collection.save()
- db.collection.stats()
- db.collection.storageSize()
- db.collection.totalIndexSize()
- db.collection.totalSize()
- db.collection.update()
- db.collection.updateOne()
- db.collection.updateMany()
- db.collection.watch()
- db.collection.validate()
- 词汇表
- 默认的MongoDB端口
- 默认的MongoDB读/写关注
- 服务器会话
- MongoDB驱动
- FAQ
- 联系我们
- 更多资料
- [快学Mongo]
- [Mongo问题讨论区]
- [Mongo 驱动使用手册]
- 本书使用 GitBook 发布
FAQ: 索引
常见问题解答:索引¶
在本页面
本文档解决了有关MongoDB 索引的一些常见问题 。有关索引的更多信息,请参见 Indexes。
如何创建索引?¶
要在集合上创建索引,请使用 db.collection.createIndex()
方法。创建索引是一种管理性操作。通常,应用程序不应定期调用 db.collection.createIndex()
。
注意
索引构建会影响性能;请参见 索引构建如何影响数据库性能?。管理员应在建立索引之前考虑性能影响。
索引构建如何影响数据库性能?¶
针对已填充集合的MongoDB索引构建,需要针对该集合进行排他性读写锁定。在mongod
释放锁定之前需要对集合进行读取或写入锁定的操作必须等待。
*在版本4.2中进行了更改。
- 对于功能兼容版本(fcv)
"4.2"
,MongoDB使用优化的构建过程,该过程仅在索引构建的开始和结束时都保留排他锁。其余的构建过程将产生交叉的读写操作。 - 对于功能兼容版本(fcv)
"4.0"
,默认的前台索引构建过程将保留整个索引构建的互斥锁。background
索引在构建过程中不会获得排他锁。
有关索引构建过程的更多信息,请参见填充集合上的索引构建 。
基于副本集的索引具有特定的性能考虑因素和风险。有关更多信息,请参见复制环境中的索引构建。为了最大程度地减少对副本集(包括分片副本集)建立索引的影响,请使用在副本集上建立索引中所述的滚动索引生成过程。
要返回当前正在运行的索引创建操作的相关信息,请参阅Active Indexing Operations。要在主数据库或独立数据库上终止正在运行的索引创建操作mongod
,请使用 db.killOp()
。部分构建的索引将被删除。
您不能在副本集的辅助成员上终止复制索引构建。您必须首先在主数据库上删除索引。二级服务器将复制删除操作,并在索引构建完成后删除索引。索引建立和删除之后的所有其他复制将会终止。
如何查看集合中存在哪些索引?¶
要列出集合的索引,请使用 db.collection.getIndexes()
方法。
如何查看查询是否使用索引?
要检查MongoDB如何处理查询,请使用 explain()
方法。
如何确定要索引的字段?
许多因素决定要索引的字段,包括 选择性,对多种查询的支持 以及索引的大小。更多信息,请参见 索引操作注意事项和 索引策略。
如何查看索引的大小?¶
db.collection.stats()
包括一个为集合中的每个索引提供了大小信息的indexSizes
文档。
根据其大小,一个索引可能无法放入内存。当您的服务器具有足够的RAM用于索引和其余工作集时,索引将加载进内存。当索引太大而无法放入RAM时,MongoDB必须从磁盘读取索引,这比从RAM读取要慢得多。
在某些情况下,索引不必完全适合RAM。有关详细信息,请参阅仅在RAM中保存最近使用值的索引。
写操作如何影响索引?
写操作可能需要更新索引:
- 如果写入操作修改了索引字段,则MongoDB将更新所有键中包含该字段的索引。
因此,如果您的应用程序是大量写入操作,则索引可能会影响性能。
原文链接:https://docs.mongodb.com/manual/faq/indexes/
译者:钟秋
update:小芒果
Copyright © 上海锦木信息技术有限公司 all right reserved,由 MongoDB汉化小组 提供技术支持文件修订时间: 2020-10-11 20:53:05