MongoDB优化器执行器介绍.pptxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

MongoDB优化器执行器介绍

主题慢查询的产生发现索引的工作原理优化器的工作原理人为干预MultiKey索引的影响注意事项

慢查询的产生慢查询通常是因为读了过多的文档数产生的db.sites.find({name:“}).explain(true)

慢查询的设置db.setProfileLevel(level, options)level0-不会记录任何查询到file(默认值)1-只记录慢查询2-记录所有的查询注:任何时候慢查询都会记录在mongod.logoptionsslowms-定义慢查询的临界值,默认100mssampleRate-sample的百分比,默认为1./manual/reference/method/db.setProfilingLevel/

慢查询的查看

索引的工作原理db.sites.createIndex({name:1})db.sites.find({name:“})

索引的特点快速检索一个key或者一段key因为索引有序,可以避免排列

讨论2个索引:{a:1}, {b:1}查询:filter:{a:{$gt:1,$lt:3}}sort: {b:1}limit:1有多少种方法来取到这一条数据?哪一种是最好的?

优化器的工作原理优化器执行计划1执行计划2执行计划N执行计划1设定目标枚举所有执行计划

执行计划的重用MongoDB缓存执行计划MongoDB会在特定场景使得cache失效创建/删除索引数据变化太多人为flush等等

思考什么时候产生的执行计划是不合理的?

影响优化器做决定客户端干预db.tab.find({a:{…}}).sort({b:1}).hint({a:1})服务端干预db.runCommand({planCacheSetFilter:“tab”,query:{a:{$gt:10,$lt:100}},sort:{b:1},indexes: [{a:1}]})

MongoDB数组运算db.employee.insert({…hobbies:[“music”,“reading”,“sport”]})db.employee.find({hobbies:“music”})db.employee.find({hobbies:“music”, hobbies:“reading”})

MongoDB数组操作{…., scores:[30,40]},{…., scores:[10,60]}db.tab.find({scores:{$gt:20, $lt: 50}})2条结果都返回db.tab.find({scores:{$elemMatch:{$gt:20,$lt:50}})

MongoDB数组操作{…., tags:[{name:“A”, value:“B”},{name:“C”, value:“D”}]}db.tab.find({:“A”, tags.value: “D}})上述记录满足条件db.tab.find({tags:{$elemMatch:{name:“A”, value: “D”}}})

MongoDBMultiKey索引db.employee.createIndex({hobbies:1})db.tab1.createIndex({scores:1})db.tab2.createIndex({:1})

MultiKeyIndex结构Key行号0103657db.tab2.insert({scores:[4,6]}) 4 6Key行号0103642057620db.tab2.find({scores:{$gt:3,$lt:4}})

MultiKeyIndex结构Key行号1103657db.tab2.insert({scores:[4,6]}) 4 6Key行号1103642057620db.tab2.find({scores:{$gt:2,$lt:4}})

讨论{appId:1,tags.tagName:1,tags.tagValue:1,_id:1}/archives/24814

MultiKeyIndex一定要考虑$elemMatch!

MultiKeyIndex内存占用Key行号0103642057620db.tab2.find({scores:{$gt:3}})如何保证行20只被返回一次?setRecordId returned; //RecordId大小为8字节…kv

文档评论(0)

办公文档大全 + 关注
实名认证
文档贡献者

文档来源于平时收集整理,如果不慎侵犯了您的权益,请私信联系本人删除,本人在看到消息后一定会在第一时间删除 。

1亿VIP精品文档

相关文档