当前位置: 首页 > 编程笔记 >

MongoDB中创建索引需要注意的事项

姚浩歌
2023-03-14
本文向大家介绍MongoDB中创建索引需要注意的事项,包括了MongoDB中创建索引需要注意的事项的使用技巧和注意事项,需要的朋友参考一下

上周在 ruby-china 上发了帖子《MongoDB 那些坑》,反映相当热烈,许多回复很有见地,其中一位童鞋深入的提到 MongoDB 建索引方法的问题,引发我更深入的了解了 MongoDB 建索引的方法和一些注意事项。

在 《MongoDB 那些坑》中提到,在前台直接运行建立索引命令的话,将造成整个数据库阻塞,因此索引建议使用 background 的方式建立。但是这也会带来一定的问题,在 2.6 版本之前,在 secondary server 中即使使用 background 方式建立索引,secondary 还是会以 foreground 方式建立索引,它导致 secondary 同样引发数据库阻塞问题。2.6 版本修复了这个 Bug,2.6 版之后使用 background 方式建立索引时,真正转向后台运行了。

为了尽量降低建立索引对 MongoDB Server 的影响,有一种方法是把 MongoDB Server 转换成 standalone 模式后建立。具体做法如下:

1.首先把 secondary server 停止,在取消 --replSet 参数,并且更改 MongoDB port 之后重新启动 MongoDB,这时候 MongoDB 将进入 standalone 模式;

2.在 standalone 模式下运行命令 ensureIndex 建立索引,建议使用 foreground 方式运行;

3.建立索引完毕之后关闭 secondary server 按正常方式启动;

4.根据上述 1~3 的步骤轮流为 secondary 建立索引,最后把 primary server 临时转换为 secondary server,同样按 1~3 的方法建立索引,再把其转换为 primary server。

这种方式还是比较麻烦的,但可以把建立索引操作对 MongoDB 的影响降到最低,在有些情况下还是值得做的。

 类似资料:
  • 主要内容:额外开销,RAM 使用,查询限制,索引键限制,插入超过索引键限制的文档,最大范围本节我们来介绍以下使用索引时的一些限制和注意事项。 额外开销 每个索引都会占用一些空间,并且在每次执行插入、更新和删除等操作时也需要对索引进行操作,导致额外的开销。因此,如果您很少将某个集合用于读取操作,最好不要在集合中使用索引。 RAM 使用 由于索引存储在 RAM(内存)中,因此应确保索引的总大小不超过 RAM 的限制。如果总大小大于 RAM 的大小,那么 MongoDB 将删除一些索引,这就

  • 本文向大家介绍SpringBoot中打war包需要注意事项,包括了SpringBoot中打war包需要注意事项的使用技巧和注意事项,需要的朋友参考一下 最近在做一个项目,遇到了项目打成 war 包的一个问题,项目创建时选择的时 jar 包方式,后因项目部署要求,需要打成 war 包部署,遇到很多坑,在此做一下记录 一、修改打包方式 原: 改后: 二、排除内置 Tomcat 原: 改后: 使用 排除

  • 本文向大家介绍什么情况下需要创建MySQL索引?,包括了什么情况下需要创建MySQL索引?的使用技巧和注意事项,需要的朋友参考一下 索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大地降低CPU资源的消耗。 如何判定是否需要创建索引? 1、较频繁地作为查询条件的字段

  • 问题内容: 我不了解pymongo和pymongo之间的区别。在MongoDB索引页面上,它说 您可以通过调用 但是在pymongo中,有两个不同的命令和,创建索引的文档包括: 与create_index()尝试无条件创建索引的方法不同,sure_index()利用驱动程序中的某些缓存,以便仅尝试创建可能不存在的索引。当PyMongo创建(或确保)索引时,将在ttl秒内“记住”该索引。在此期限内重

  • 本文向大家介绍JAVA 创建线程池的注意事项,包括了JAVA 创建线程池的注意事项的使用技巧和注意事项,需要的朋友参考一下 1、创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。创建线程池的时候请使用带ThreadFactory的构造函数,并且提供自定义ThreadFactory实现或者使用第三方实现。 2、线程池不允许使用Executors去创建,而是通过ThreadPoolExecut

  • 我正在尝试使用logstash配置在kibana中可视化mongodb数据。下面是我的配置。我在终端中得到一些输出,它永远循环。我看不到由配置文件中提到的名称创建的任何索引,如果索引是生成的,也没有任何数据。在discover选项卡中没有匹配的结果。如何在Kibana中使配置可视化数据? http://localhost:9200/ayesha_logs/_search?漂亮 终端日志:D,[20