mongo性能优化

一 索引
mongo的索引信息被保存在system.indexes 中,默认为_id创建索引
1 普通索引
db.users.ensureIndex({name:1}) 


如果数据量很大,那么放后台去跑
db.users.ensureIndex({name:1},{backgroud:true})


2 组合索引
db.address.ensureIndex( { "addr.city" : 1, "addr.state" : -1 } );
和关系型数据库差不多,条件列顺序和索引顺序一致才能使用哦


3 唯一索引
db.collections_name.ensureIndex({"age": 1}, {unique: true});


4 强制使用索引 (加hint)
db.users.find({age:{$lt:30}}).hint({name:1, age:1})


5 删除索引
users集合的索引都被干掉了
db.users.dropIndexes()
删除users集合的某一个索引
db.users.dropIndexes({"age":1})


6 查看某个集合上的索引
db.users.getIndexes(); 


二 利用profile定位慢查询
db.setProfilingLevel()
0 不开启
1 记录慢查询(默认为>100ms)
2 记录所有查询


设置记录的的条件,500ms
1 db.setProfilingLevel(1,500);  
db.getProfilingStatus();  查看是否打开慢查询


2 生成慢查询
db.system.profile.find().sort({millis:-1}).limit(10);  返回10条慢查询
根据语句,加索引


3 关闭profile
db.setProfilingLevel(0);


三 性能监控工具
1 mongostat
insert: 每秒插入量
query: 每秒查询量
update: 每秒更新量
delete: 每秒删除量
locked: 锁定量
qr | qw: 客户端查询排队长度(读|写)
ar | aw: 活跃客户端量(读|写)
conn: 连接数
time: 当前时间


2 db.serverStatus
关注
extra_info.page_faults
lock
mem 
connections


3 db.stats


四 常用性能优化方案


1 创建索引

2 限定返回结果

3 只查询使用的字段
4 发现性能有问题,配合使用profiling和mongostat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值