最新版的mongodb无法后台创建索引吗?官网显示background是deprecated状态,会被解释器过滤。我现在有上百个集合,想给它们中的某些关键字段做索引,只能前台做吗?或者有什么提高效率的方法?求助。
asgssdddds 未选择答案
从4.2版本开始,已经不区分区前台还是后台创建索引,无需要指定background参数。在系统空闲或者集合不忙的情况,4.2版本创建索引效率接近4.2之前版本使用前台创建效率。再也不用担心前台创建索引问题。
如果系统很繁忙的情况下,可以使用滚动创建索引方式.即先从库进入维护模式下创建索引,然后进行主备切换,再次执行索引。这个对繁忙系统影响最小。需要关注:1、Oplog的保留窗口是否足够 2、是否存在SPA架构,此时从库宕机后,应用使用writeConcern:majority会存在问题。 3、如果备库特别多,手动执行相对麻烦。 否则一般在主库或者mongos执行索引即可。
xiaoxu 发表新评论
MongoDB本身没有这个daemon方式,你在server端通过js或者shell方式eval方式执行命令,通过系统nohup &来在后台运行。这个不存在ssh端口问题,你可以通过db.currentOp或者执行脚本打印日志来监控索引创建情况。类似Oracle、Mysql都没有提供demon方式创建索引,都存在ssh中断问题,通常都是采用系统级别守护进程来执行。
谢谢回答,可能我的意思没有表述清楚。我的集合数量非常多,并且数据量很大。在创建索引的过程中mongosh一直是阻塞住的。这很考验我的ssh网络环境,一旦ssh断掉,创建索引的过程就会中断。有没有办法让这个操作在后台运行呢?