MongoDB如何正确地中断正在创建的索引
  • 作者:admin
  • 发表时间:2020-12-28 08:43
  • 来源:未知

本文主要介绍MongoDB如何正确中断正在创建的索引的相关信息。通过示例代码详细介绍,对大家的学习或工作有一定的参考学习价值。让我们和边肖一起学习。

当我们使用MongoDB时,我们需要向现有大型集合的某个字段添加索引。

索引分为前台索引和后台索引,对应于pymongo中创建索引的代码:

导入pymongo

handler=pymongo。MongoClient().yourdb.yourcol

#前景索引

汉德勒。create _ index('字段名')

#背景索引

汉德勒。create _ index('字段名' ',背景=真)

如果集合中有大量数据,并且您正在使用前台索引,此时,创建索引将锁定集合,并且对集合的所有写操作都将暂停。直到创建索引。如果使用后台索引,创建索引的过程不会影响数据写入。

但是有时候,我想创建一个背景索引,却忘了添加参数background=True。现在该怎么办?由于大型集合创建索引可能需要几个小时,挂起的写数据将在内存中累积,使内存爆满。

此时,不要重启MongoDB,因为重启后,之前没有完成的索引创建操作仍然会自动启动,继续创建。

正确的做法是终止创建索引的过程。

这一点,我们可以在MongoDB Shell或者Robo 3T中操作。

这里以Robo 3T为例,先打开对应的收藏,如下图所示:

然后将命令栏的内容更改为:

1db.currentOp()

返回的内容如下图所示:

创建索引的过程中,可以在参数中看到类似的东西

1'lockType': 'write '

这样的字场。在它附近,你可以找到一个叫opid的领域。

然后在命令栏中输入命令:

1db.killOp(opid)

扼杀进程。

然后重新创建背景索引。

本文介绍了MongoDB如何正确地中断正在创建的索引。有关MongoDB中断正在创建的索引的更多信息,请搜索脚本之家以前的文章或继续浏览下面的相关文章。希望大家以后多多支持脚本屋!