zoukankan      html  css  js  c++  java
  • MongoDB 建立与删除索引

    1.1 在独立服务器上面建立索引

    在独立服务器上面创建索引,可以在空闲时间于后台建立索引。

    在后台建立索引,可利用background:true参数运行

    >db.foo.ensureIndex({"somefield":1,{:background":true})

    1、任何类型的索引均可在后台完成建立

    2、前台建立索引耗时少,但是索引建立期间会锁定数据库,导致其他操作无法进行数据读写

    3、后台建立索引期间,则会定期释放写锁,从而保证其他操作的运行

    1.2 在副本集上建立索引

    1、副本建立索引问题

    如果集合较大,则会出现备份节点同时开始建立索引的情况。

    突然间所有备份节点都无法被客户端读取了,同时可能也无法及时进行同步操作。

    2、对于较大结合,推荐采用如下方式

    (1)关闭一个备份节点

    (2)将其作为独立的节点启动

    (3)在这一服务器上建立索引

    (4)重新将其作为成员加入副本集

    (5)对每个备份节点执行同样的操作

    3、对于主节点

    (1)备份节点创建完索引后,于后台在主节点中建立索引

    (2)关闭主节点,并执行以上步骤(1)-(4),像在备份节点一样,在主节点建立索引。该方式需要数据库停运一次,应权衡利弊进行选择。

    1.3 在分片上建立索引

    1.4 删除索引

    使用dropIndexes命令指定索引名删除索引

    查询system.indexes集合找出索引名,即使时自动生成的索引名,在不同驱动器键也会存在些差异

    1、删除指定的单个索引

    >db.runCommand({"dropIndex":"foo","index":"alphabet"})

    2、删除集合中所有索引

    >db.runCommand({"dropIndexes":"foo","index":"*"})

    但是这种方法无法删除_id索引。只有删除整个集合才能删除掉该索引。

    删除集合中的全部文档不会对该索引产生影响,新文档插入后索引仍可正常增加。

    1.5 内存溢出杀手OOM Killer

    可将MongoDB设置为不可被OOM Killer终止

  • 相关阅读:
    九九乘法表及双色球
    错误 “SCRIPT7002: XMLHttpRequest: 网络错误 0x2ef3, ie浏览器兼容问题
    隐藏ie input的X和眼睛图标
    vue-cli解决兼容ie的es6+api问题
    git 本地tag和远程tag对应不上 vscode里pull不下代码
    git 计算commit
    git 查看对比的方法log diff
    git 版本回退方法
    git rebase的使用
    git 常规操作
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11277614.html
Copyright © 2011-2022 走看看