MongoDB db.collection.createIndex() 没有响应
MongoDB Not Responding on db.collection.createIndex()
目前我正在为我的大数据项目使用 mongodb。我已经将 mongodb 安装到具有 32GB RAM 并连接到 12TB NFS 的 Centos 7 服务器中。到目前为止,这是我的数据库统计信息:
web-analyzer 43.933 GB
web-crawler 109.900 GB
web-crawler2 339.788 GB
问题是,每当我 运行 may 集合上的 craeteIndex() 时,我的 mongodb 总是以无响应结束(我无法执行 db.collection.count() 或 'show dbs / collections' 命令)所以我使用 CTRL + C 终止作业。之后我无法使用 'kill pid' 或 'mongod --shutdown' 命令关闭我的 mongodb 所以我必须重新启动我的服务器。任何人都知道这个问题的原因以及如何解决这个问题?
这是我的 'top' mongod 服务的命令输出:
在 运行 查询之前:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 99220 70964 S 0.3 0.3 0:00.33 mongod
在 运行ning createIndex()
之后
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 2.465g 2.411g S 2.7 7.9 0:26.03 mongod
谢谢:)
默认情况下,建立索引是一个阻塞操作,它会锁定数据库直到完成。当您的集合中已经有大量数据时,这可能需要很长时间。但是您可以使用 background:true
选项在后台建立索引。
db.collection.createIndex({ keyfield: 1, otherkeyfield: 1 }, { background: true });
总体上会花费更长的时间,但数据库会在您这样做时保持响应。
有关创建索引的更多信息,please refer to the documentation。
目前我正在为我的大数据项目使用 mongodb。我已经将 mongodb 安装到具有 32GB RAM 并连接到 12TB NFS 的 Centos 7 服务器中。到目前为止,这是我的数据库统计信息:
web-analyzer 43.933 GB
web-crawler 109.900 GB
web-crawler2 339.788 GB
问题是,每当我 运行 may 集合上的 craeteIndex() 时,我的 mongodb 总是以无响应结束(我无法执行 db.collection.count() 或 'show dbs / collections' 命令)所以我使用 CTRL + C 终止作业。之后我无法使用 'kill pid' 或 'mongod --shutdown' 命令关闭我的 mongodb 所以我必须重新启动我的服务器。任何人都知道这个问题的原因以及如何解决这个问题?
这是我的 'top' mongod 服务的命令输出:
在 运行 查询之前:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 99220 70964 S 0.3 0.3 0:00.33 mongod
在 运行ning createIndex()
之后PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 2.465g 2.411g S 2.7 7.9 0:26.03 mongod
谢谢:)
默认情况下,建立索引是一个阻塞操作,它会锁定数据库直到完成。当您的集合中已经有大量数据时,这可能需要很长时间。但是您可以使用 background:true
选项在后台建立索引。
db.collection.createIndex({ keyfield: 1, otherkeyfield: 1 }, { background: true });
总体上会花费更长的时间,但数据库会在您这样做时保持响应。
有关创建索引的更多信息,please refer to the documentation。