在集合上添加新索引后是否必须重新启动MondoBD?

时间:2019-07-16 10:16:25

标签: mongodb

随着MongoDB超时的增长,它提供数据的速度很慢。

我需要在几个字段上添加索引,并在搜索中立即反映出来。因此,我寻求澄清以下内容:

  1. 索引编制后是否必须重新启动MongoDB?

  2. 如果是,那么有什么方法可以在不重新启动服务器的情况下添加索引?我不要任何停机时间...

2 个答案:

答案 0 :(得分:0)

建立索引后,无需重新启动MongoDB。

但是,默认情况下,createIndex操作会阻止对受影响的数据库进行读/写操作(请注意,它不仅是集合,而且是数据库)。您可以使用背景模式更改行为,如下所示:

db.collectionName.createIndex( { collectionKey: 1 }, { background: true } )

似乎在创建索引时您的客户端已被阻止。创建索引的mongo shell会话或连接将被阻止,但是如果数据库有更多连接,则这些连接仍将能够查询并在数据库上进行操作。

文档:https://docs.mongodb.com/manual/core/index-creation/

答案 1 :(得分:0)

添加索引后,无需重新启动MongoDB!

但是,可以在前台创建索引,这是默认设置。

是什么意思? MongoDB文档指出:“默认情况下,在填充的集合上创建索引会阻止数据库上的所有其他操作。在填充的集合上建立索引时,保存该集合的数据库在索引建立完成之前不可用于读取或写入操作。任何需要对所有数据库进行读写锁定的操作都将等待前台索引构建完成。

对于在独立部署上可能长期运行的索引构建操作,应使用background选项。在这种情况下,MongoDB数据库在索引构建操作期间仍然可用。 要在后台创建索引,应使用以下代码段,请参见下图。

enter image description here