当用户不断增长,数据不断增加,数据库压力越来越大,性能也会下降,此时就要快速定位性能下降的问题
一. 优化方案
1.优化方案1:创建索引
在查询条件的字段上或者排序条件的字段上创建索引,可以显著提高执行效率,但如果写比读多,就不要索引,索引越多写操作越慢
2.优化方案2:限定返回结果条数
可以减少数据库服务的资源消耗,也可以减少网络传输的数据量
3.优化方案3:只查询使用到的字段,不查询所有字段
4.优化方案4:使用capped集合
capped集合比普通集合的读写效率高
5.优化方案5:采用Server Side Code Execution
可以减少网络开销
6.优化方案6:hint
指定强制使用索引
7.优化方案7:profiling
比capped差,但不是很严重
二. 监控性能
MongoDB性能监控工具有以下几种:
- mongosniff底层监控
- Mongostat查看运行中的实例统计信息
- db.serverStatus看实例运行状态
- db.stats查看数据库状态
- 第三方工具
1.mongosniff底层监控
此命令必须以root身份执行:
>mongosniff --source NET 1o
//然后会监听本地默认27017端口的所有请求
2.Mongostat查看运行中的实例统计信息
>mongostat
//查看正在运行中的实例统计信息
3.db.serverStatus看实例运行状态
>db.serverStatus()
//可以查看比较消息的信息
4.db.stats查看数据库状态
>db.stats()
//查看数据库状态信息
5.第三方工具
推荐常用监控框架:
cacti、Nagios、Zabbix等
小结:
MongoDB优化远不止这些,很多技巧只有实际运用才能体会