MongoDB 创建索引导致锁库的解决方案

数据库 waitig 646℃ 百度已收录 0评论

MongoDB 创建索引导致锁库的解决方案

  • 背景描述

    300G 的数据创建索引,执行 db.ensureIndex({key:1}) 之后,打开另一个终端,任何操作都不能执行。

  • 根本原因

    在数据库建立索引时,默认时 “foreground” 也就是前台建立索引,但是,当你的数据库数据量很大时,在建立索引的时会读取数据文件,大量的文件读写会阻止其他的操作,命令没有显性指定 background,所以命令会锁库。

  • 解决方案

    执行 db.ensureIndex({key:1},{background: true}),这样就不会锁库了,建立索引就会在后台处理了。(注:“{key:1}” 中,1 表示升序 – asc,-1 表示降序 – desc )

    在后台建立索引的时候,不能对建立索引的 collection 进行一些坏灭型的操作,如:运行 repairDatabase,drop,compat,当你在建立索引的时候运行这些操作的会报错。


本文由【waitig】发表在等英博客
本文固定链接:MongoDB 创建索引导致锁库的解决方案
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)