mongoDB优化(二) --- 索引策略

前言: 索引是目前测试过程中发现问题最多的地方,所以过多会引起insert操作的时间以次方上升。但同时更多索引可以让query操作响应时间大大缩短。所以好的索引策略是非常重要的。

注意:添加索引时会引起整张表暂时不可用,所以添加是需要非常谨慎的!

索引的基本操作:

查看索引

db.AuditLog.getIndexes()

获取OrganizationUnit表的所有索引。所有的表都会有一个默认的索引,而且不可删除。

创建索引

db.AuditLog.createIndex({who:1})

删除索引

db.AuditLog.dropIndex({who:1})   ---删除单个索引
db.AuditLog.dropIndexes()   ---删除全部索引

策略:

1. 对于只有insert操作的表直接drop掉所有的索引即可,相反的只有query操作的表则尽可能把所有的query条件都添加上索引。

扫描二维码关注公众号,回复: 1773409 查看本文章

2. 如果数据库操作比较慢,需要查看是否所有索引都在ram中

db.OrganizationUnit.totalIndexSize()
333438976

3. 如果不确定慢在什么地方可以使用explain命令来查看是不是使用了索引。

db.ApplicationInformation.find({ "applicationUuid" : "1390f4b4907fea0cd2c3f904fc262f9fnCJw10j8iwK", "enterpriseId" : "test3" }).explain(true)

在返回的内容里,前面是一些查询计划和最后选择的查询方式等等内容,我们需要关注这部分:


        "executionTimeMillis" : 该查询使用的总时长
        "totalDocsExamined" : 扫描了多少次文档完成本次查询
  一般来说我们希望nRetrurned和totalDocsExamined的值尽可能接近。

猜你喜欢

转载自www.cnblogs.com/pill/p/9235079.html
今日推荐