zoukankan      html  css  js  c++  java
  • Mongdb优化

    1.索引
    1)基础索引
    --为集合colt1的x列创建升序基础索引
    # cd /usr/local/mongodb4.2.2/bin
    # ./mongo -uroot -p
    > use db_test
    > db.colt1.find();
    > db.colt1.getIndexes();
    > db.colt1.ensureIndex({x:1});
    > db.colt1.getIndexes();
    --为集合colt1的y列创建降序基础索引
    > db.colt1.ensureIndex({y:-1});
    > db.colt1.getIndexes();
    --通过后台方式静默为colt1的y列创建升序索引,以免阻塞mongodb上的读写操作
    > db.colt1.getIndexes();
    > db.colt1.dropIndex("y_-1");
    > db.colt1.getIndexes();
    > db.colt1.ensureIndex({y:1},{background:true});
    --查看当前活动的且运行时间超过3秒的后台创建索引任务
    > db.currentOp({"active":true,"secs_running":{ "$gt":3}});
    --kill掉正在运行的任务
    > db.killOp(opid)

    2)文档索引
    --为colt1中addr列创建文档索引
    > db.colt1.insert({x:"john",y:"student",addr:{country:"cn",city:"shanghai"}});
    > db.colt1.find();
    > db.colt1.ensureIndex({addr:1});
    > db.colt1.getIndexes();
    > db.colt1.find({addr:{"cn","shanghai"}});
    > db.colt1.find({addr:{"shanghai","cn"}});

    3)复合索引
    --为colt1中x和y创建符合索引
    > db.colt1.ensureIndex({x:1,y:-1});
    > db.colt1.getIndexes();
    > db.colt1.find().sort({x:1,y:-1});

    4)唯一索引
    --为colt1中x列创建唯一索引
    > db.colt1.getIndexes();
    > db.colt1.dropIndex("x_1");
    > db.colt1.ensureIndex({x:1},{unique:true});
    > db.colt1.insert({x:"mongodb"});
    > db.colt1.insert({x:"mongodb1"});
    > db.colt1.find();

    5)强制使用索引
    --强制使用x和y列上的复合索引
    > db.colt1.find({x:"mongdb",y:"nohint"}).explain();
    > db.colt1.find({x:"mongdb",y:"nohint"}).hint({x:1,y:-1}).explain();

    6)删除索引
    --删除colt1中x列上的索引
    > db.colt1.dropIndex({x:1});
    --删除colt1上名字为"y_1"的索引
    > db.colt1.dropIndex("y_1");
    --删除colt1上的所有索引
    > db.colt1.dropIndexes();

    7)重建索引
    --删除并重建colt1上的所有索引
    > db.colt1.reIndex();

    8)查看执行计划
    > db.colt1.find({x:1}).explain();

    2.profile使用
    1)开启profile
    --通过启动参数开启profile
    # cd /usr/local/mongodb4.2.2/bin
    # ./mongod -f /etc/mongodb.cnf -profile=1
    --通过客户端命令行开启
    > db.setProfilingLevel(2);
    > db.getProfilingLevel();
    --注
      0:不开启;
      1:记录慢操作;
      2:记录所有操作;
    2)设置慢操作阈值
    --设置慢操作阈值为1s
    > db.setProfilingLevel(1,1000);
    --查询大于100ms的profile记录
    > db.system.profile.find({millis:{$gt:100}});

    3.限制返回的列和记录数
    --限制colt1中值返回x和y列的2条记录
    > db.colt1.find({},{x:1,y:1}).sort({x:1}).limit(2);

  • 相关阅读:
    DNS正向解析实现
    基于bind软件部署DNS服务器
    DNS解析工具使用案例
    DNS服务工作原理
    3
    .deb/.whl/.tgz/.tar/gz软件包安装方式(Ubuntu)
    博客系列目录
    Databricks 第3篇:pyspark.sql 通过JDBC连接数据库
    Databricks 第2篇:pyspark.sql 简介
    数据预处理 第4篇:数据预处理(sklearn 插补缺失值)
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/14134710.html
Copyright © 2011-2022 走看看