• 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);

  • 相关阅读:
    Row size too large. The maximum row size for the used table type 解决
    pandas Series介绍
    Scala核心编程_第08章 面向对象编程(中高级部分)
    mysql增删改字段,重命名替换字段
    python报错ValueError: cannot reindex from a duplicate axis
    pandas DataFrame 数据筛选
    Scala核心编程_第07章 面向对象编程(中级部分)
    Scala核心编程_第06章 面向对象编程(基础部分)
    《The Rise and Fall of Scala》scala兴衰读后感
    信贷业务(Ali)
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/14134710.html
Copyright © 2020-2023  润新知