1.cpu使用率很高,可以查询下索引建立是否合理,更细粒度的查看,可以使用mongotop,里面会列出每个表的读写时间,另外mongo日志里面也会打印比较耗时的操作,默认是100ms
2.索引建立是有顺序区别的,查询条件无顺序区别。索引是从左往右,如果当中缺失,就利用不了索引,比如:索引顺序是a,b,c,如果查询是b,c,a缺失,不能命中索引,如果是a,b,这样会命中索引
3.如果某个字段的取值范围很小,个数级别,建议不要建立索引,这样会浪费索引空间,也降低性能
4.如果读频繁,可以利用Replica Sets做读写分离,分担主库压力,如果是写频繁,可以做分片或者分库
5.在Replica Set集合库中,在主库进行后台建立索引的时候,复制集读写不能操作,建议先下掉数据库,建好之后再上线
6.在实时性比较高的情况下,一定要注意不要从复制集读取数据,更新没有那么快
7.在进行模糊搜索的时候,建议做full_text索引
8.如果数据库读取比较频繁并且比较大,可以考虑加Cache