mongodb(三):索引构建分析和用户权限

原创 2017年10月06日 19:55:06

一、索引构建情况分析
1、mongostat工具

//使用,在根目录下
bin/mongostat -h 127.0.0.1:12345

mongostat 输出部分字段的含义:
(1)inserts/query/update/delete: 分别指当前mongodb插入、查询、更新、删除 数量,以每秒计;
(2)getmore: MongoDB返回结果时,每次只会返回一定量;当我们继续用find()查询更多数据时,系统就会自动用getmore来获取之后的数据;
(3)command: 执行的命令数量;
(4)flushes: MongoDB使用虚拟内存映射的方式管理数据,我们在向MongoDB写入或查询数据时,MongoDB会做一次虚拟内存映射,有些数据其实是在硬盘上的;每隔一段时间,MongoDB会把我们写到内存的数据flush到硬盘上;这个数据大的话,会导致mongodb的性能较差;
(5)mapped/vsize/res: 与磁盘空间大小有关,申请的内存大小;
(6)faults:如果我们查询的数据,没有提前被MongoDB加载到内存中,我们就必须到硬盘上读取,叫做“换页”;如果faults比较高,也会造成性能下降;
(7)idx miss: 表示我们的查询没有命中索引的比率;如果很高,说明索引构建有问题,索引不合适或者索引数量不够;
(8)qr|qw: 说明MongoDB的写队列或者读队列的情况。我们向MongoDB读写时,这些请求会被放到队列中等待。数量大(几百上千)说明MongoDB处理速度慢或者读写请求太多,性能会下降。
(9)ar|aw: 当前活跃的读写客户端的个数。

2、profile集合介绍(生产环境一般不用)

//查看当前数据库的profile状态
db.getProfilingStatus()
{ "was" : 0, "slowms" : 100 }

//查看当前数据库的记录级别
db.getProfilingLevel()
0|1|2

//设置当前数据库的profile记录级别
db.setProfilingLevel(0|1|2)

//was      --profile记录级别,0关闭,1记录所有慢查询,2记录所有操作
//slowms   --慢查询阀值

//查看profile文件
db.system.profile.find()

{ "op" : "query",--操作类型
 "ns" : "imooc.system.profile", --查询的命名空间,;databasename.collectionname'
 "query" : { "query" : {  }, --查询条件
"orderby" : { "$natural" : -1 } }, --约束条件
 "ntoreturn" : 1, --返回数据条目
 "ntoskip" : 0,  --跳过的条目
 "nscanned" : 1, --扫描的数目含索引
"nscannedObjects" : 1, --扫描的数据数目
 "keyUpdates" : 0,  --
 "numYield" : 0, --其他情况
 "lockStats" : {  --锁状态
    "timeLockedMicros" : { --锁占用时间(毫秒)
        "r" : NumberLong(82), --读锁
        "w" : NumberLong(0)   --写锁
                 },
    "timeAcquiringMicros" : {
         "r" : NumberLong(2), "w" : NumberLong(2)
                }
           },
 "nreturned" : 1, 
 "responseLength" : 651,   --返回长度
 "millis" : 0, --查询时间

3、日志

vim mongod.conf
//增加以下配置项
verbose=vvvvv
//保存退出:wq

4、explain分析

//使用方法
db.集合名.find({x:1}).explain()

{
        "cursor" : "BasicCursor",   --使用的游标
        "isMultiKey" : false,
        "n" : 1,
        "nscannedObjects" : 100000,  --扫描的数据量
        "nscanned" : 100000,         --包含索引的扫描量
        "nscannedObjectsAllPlans" : 100000,
        "nscannedAllPlans" : 100000,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 781,
        "nChunkSkips" : 0,
        "millis" : 25,              --查询消耗时间(毫秒)
        "server" : "XXX",
        "filterSet" : false
}

二、用户权限管理

//创建用户
>db.createUser({user:"admin",pwd:"1234",roles:[{role: "userAdminAnyDatabase", db: "admin"}]})

Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

//关闭mongod服务
> use admin
> db.shutdownServer()

//编辑mongod.conf,写入auth=true,然后:wq
vim conf/mongod.conf

//这时我们有两种用户登录数据库的方式。
//方式一 :在连接服务器的同时进行用户认证

    bin/mongo 127.0.0.1:12345 -u "admin" -p "1234" --authenticationDatabase "admin"

//方式二 :先连接服务器,然后在数据库内认证。
    bin/mongo 127.0.0.1:12345
    use admin
    db.auth("admin","123")

角色类型:
(1)数据库用户角色:read、readWrite;
(2)数据库管理角色:dbAdmin、dbOwner、userAdmin;
(3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
(4) 备份恢复角色:backup、restore;
(5) 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
(6) 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
(7)内部角色:__system

自定义角色:createRole

版权声明:本文为博主原创文章,未经博主允许不得转载。

MONGODB用户、角色和权限管理

最近遇到很多问MONGODB用户认证授权方面的问题,现在特记录下来,与大家共享。 一、概念理解 1、用户概念 Mongodb的用户是由 用户名+所属库名组成 例如: 登录mongo  testdb...
  • DBABruce
  • DBABruce
  • 2016年03月23日 15:54
  • 11083

mongodb用户权限管理配置

环境mongodb 3.4 window7MongoDB常用命令[root@snails ~]# ps -ef|grep mongod [root@snails ~]# mongo --host=1...
  • u013066244
  • u013066244
  • 2016年12月25日 22:04
  • 6856

mongodb用户创建及权限控制

摘要:       MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。 环境、测试:       在安装...
  • u011191463
  • u011191463
  • 2017年03月30日 12:36
  • 3116

MongoDB 3.x 中添加用户和权限控制

现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth) 1.在admin库中,添加用户并授权 ...
  • he90227
  • he90227
  • 2016年08月03日 14:17
  • 3186

MongoDB(四)mongodb设置用户访问权限

我们知道mysql在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全...
  • lovesummerforever
  • lovesummerforever
  • 2014年10月16日 18:15
  • 6164

MongoDB索引创建

索引的操作 数据库百分之八十的工作基本上都是查询,而索引能帮我们更快的查询到想要的数据.但是其降低了数据的写入速度,所以要权衡常用的查询字段,不必在太多字段上建立索引. 在mongoDB中默认...
  • Hu_wen
  • Hu_wen
  • 2017年04月07日 10:48
  • 881

MongoDB用户权限操作

#Mongodb版本:3.0.4 和其他所有数据库一样,权限的管理都差不多一样。mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。m...
  • YABIGNSHI
  • YABIGNSHI
  • 2015年06月26日 15:19
  • 2269

MongoDB 3.0+ 安全权限访问控制

MongoDB3.0+的权限,网上搜出来的解决方法都是3.0以下的版本的,所以不适合3.0+以上的版本,由于这版本改变的有些大,解决了很久,终于解决,下面把解决的步骤以及思路分享给大家。...
  • LK10207160511
  • LK10207160511
  • 2015年12月13日 11:45
  • 13267

mongodb 添加用户及权限设置详解

mongodb 添加用户及权限设置详解
  • wyqlxy
  • wyqlxy
  • 2016年04月08日 10:10
  • 2567

MongoDB性能篇之索引分析

一、索引MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以这样说说,索引...
  • u011374919
  • u011374919
  • 2016年08月02日 17:26
  • 180
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mongodb(三):索引构建分析和用户权限
举报原因:
原因补充:

(最多只允许输入30个字)