性能优化:
explain()
看一条语句的好坏,1是否用到索引,2影响行数。
db.c1.find({name:"user5"}).explain()
{
"cursor" : "BtreeCursorname_1",--使用了索引
"isMultiKey" : false,
"n" : 1, --返回的行数
"nscannedObjects" : 1,
"nscanned" : 1,---扫描1行
"nscannedObjectsAllPlans" :1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,--用时
"indexBounds" : {--使用的索引
"name" : [
[
"user5",
"user5"
]
]
},
"server" :"hpo-PC:27017",
"filterSet" : false
}
Profile :
是一种慢查询日志功能。
默认是关闭的。
开启profiling功能:
1.启动时候加 –profile=级别即可。级别(0不开启;1记录慢命令(默认>100ms);2记录所有命令);
2.db.setProfilingLevel(1);启动慢查询基本为1,默认时间100ms
启动时修改慢查询时间:
mongod--dbpath F:\DingSai\Mongodb\data --logpath=F:\DingSai\Mongodb\logs\mongodb.log--logappend--profile=1(开启慢查询级别是1) --slowms=10(慢查询时间10ms毫秒)
db.getProfilingLevel();查看当前profiling状态
F:\DingSai\Mongodb\bin>mongod–h ;查看mongo命令的参数
索引优化方案:
1. 创建索引
2. 限定返回条数
3. 返回使用到的字段,不适用不返回。
4. 采用capped collection 使用固定集合固定表。
5. 采用profiling慢查询,采用会影响速度但是很小,profiling使用system.profile来记录。
性能监控工具:
Mongostat:
Bin目录下执行:
mongostat -rowcount 5 1;每1秒执行一次输出,一共执行5次。
mongostat -rowcount 0 5;每5秒执行一次,一直执行。
mongostat–rowcount; 执行次数 执行间隔(秒)。
mongostat-n 10>e:\test.txt; 输出10行到text.txt。