Mongodb - 默认索引创建 - 后台构建
Mongodb - Default Index Creation - Background Construction
我目前正在使用 3.2.1 mongo driver version
。
用例 -
Write - 在集合中批量插入或按行插入
阅读 - 在_id
的基础上阅读。
不需要额外的索引,mongodb 在 _id 字段上创建的默认索引就足够了。
问题 - 我的 Mongo 服务(调用 mongodb)占用了过多的 CPU 负载。
1.) Mongodb 是否在后台对 _id 字段创建索引。
2.) 如果没有,我需要让它在后台创建索引以加快进程。我怎样才能以编程方式做到这一点。
可能是这样的,
collection.createIndex(new BasicDBObject("_id", 1),new BasicDBObject("background", true));
我遇到了这个link
如果您使用的是java api,这里是正确用法的参考:
http://api.mongodb.org/java/3.0/com/mongodb/client/model/IndexOptions.html
基本上您需要使用 api 的 IndexOptions 正确提供背景选项。
运行在后台设置索引不会使插入 运行 更快,相反,它 运行 更慢。但是,查询将是异步的,因此允许您的应用程序同时进行 运行 其他查询。
您可以尝试以下方法来提高批量插入的性能
- 创建一个允许在辅助节点上读取的副本。这将在主节点上插入 运行ning,而读取将定向到辅助节点。 运行在后台建立索引在这种情况下会有所帮助。在这种情况下,避免读取陈旧数据很重要。
- 创建一个与您要插入的数据的形状配合良好的新索引。
- 使用集合上的键变体创建多个索引。
- 运行 对小型数据集的插入查询。 Mongo 将分析所有
集合中可用的索引,然后选择执行该操作的索引
最适合您要插入的数据的形状。
- 运行 db..explain("executionStats") 在查询中找出
正在使用哪个索引。
- 删除所有其他索引,因为它们会影响您的插入性能。
- 运行 您的完整查询并查看它如何使用新索引执行。
如果您正在使用 Spring 数据 MongoDB 那么您可以使用 Index() class 上的构建器方法来设置背景 属性:
new Index(CREATED_DATE_FIELD_NAME, Sort.Direction.DESC).background();
我目前正在使用 3.2.1 mongo driver version
。
用例 -
Write - 在集合中批量插入或按行插入
阅读 - 在_id
的基础上阅读。
不需要额外的索引,mongodb 在 _id 字段上创建的默认索引就足够了。
问题 - 我的 Mongo 服务(调用 mongodb)占用了过多的 CPU 负载。
1.) Mongodb 是否在后台对 _id 字段创建索引。
2.) 如果没有,我需要让它在后台创建索引以加快进程。我怎样才能以编程方式做到这一点。
可能是这样的,
collection.createIndex(new BasicDBObject("_id", 1),new BasicDBObject("background", true));
我遇到了这个link
如果您使用的是java api,这里是正确用法的参考:
http://api.mongodb.org/java/3.0/com/mongodb/client/model/IndexOptions.html
基本上您需要使用 api 的 IndexOptions 正确提供背景选项。
运行在后台设置索引不会使插入 运行 更快,相反,它 运行 更慢。但是,查询将是异步的,因此允许您的应用程序同时进行 运行 其他查询。
您可以尝试以下方法来提高批量插入的性能
- 创建一个允许在辅助节点上读取的副本。这将在主节点上插入 运行ning,而读取将定向到辅助节点。 运行在后台建立索引在这种情况下会有所帮助。在这种情况下,避免读取陈旧数据很重要。
- 创建一个与您要插入的数据的形状配合良好的新索引。
- 使用集合上的键变体创建多个索引。
- 运行 对小型数据集的插入查询。 Mongo 将分析所有 集合中可用的索引,然后选择执行该操作的索引 最适合您要插入的数据的形状。
- 运行 db..explain("executionStats") 在查询中找出 正在使用哪个索引。
- 删除所有其他索引,因为它们会影响您的插入性能。
- 运行 您的完整查询并查看它如何使用新索引执行。
如果您正在使用 Spring 数据 MongoDB 那么您可以使用 Index() class 上的构建器方法来设置背景 属性:
new Index(CREATED_DATE_FIELD_NAME, Sort.Direction.DESC).background();