mongodb(三):索引构建分析和用户权限
来源:互联网 发布:全球云计算市场格局 编辑:程序博客网 时间:2024/06/05 20:39
一、索引构建情况分析
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,然后:wqvim 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 索引构建情况分析、MongoDB 安全
- MongoDB数据库索引构建情况分析
- MongoDB数据库索引构建情况分析
- oracle索引和用户权限
- Mongodb源码分析--插入记录及索引B树构建
- Mongodb源码分析--插入记录及索引B树构建
- Mongodb源码分析--插入记录及索引B树构建
- Mongodb源码分析--插入记录及索引B树构建
- Mongodb源码分析--插入记录及索引B树构建
- Mongodb源码分析--插入记录及索引B树构建 .
- Mongodb源码分析--插入记录及索引B树构建
- MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB MongoDB索引用法和效率分析(5)
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- 模拟Sum函数(版本二)
- C语言 输出任意两个数之间的质数
- requests+正则表达式爬猫眼电影TOP100
- 2017.10.6 单词 思考记录
- Hibernate 多对一配置
- mongodb(三):索引构建分析和用户权限
- poj2594 最小路径覆盖 (点可以重复访问)
- 2014 Benelux Algorithm Programming Contest (BAPC 14) K
- 数据结与算法之查找
- java基础数组排序
- 正则表达式
- Hibernate--->缓存
- 初识spring
- Spring AOP简述