MongoDB查询优化分析
发布时间:2016-05-18 19:37:08 所属栏目:MySql教程 来源:网络整理
导读:在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就 是开启Profiling功能。该工具在运行的实例上收集
在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就 是开启Profiling功能。该工具在运行的实例上收集有关MongoDB的写操作,游标,数据库命令等,可以在数据库级别开 启该工具,也可以在实例级别开启。该工具会把收集到的所有都写入到system.profile集合中,该集合是一个capped collection。更多的信息见:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
使用说明: 1:Profiling级别说明 0:关闭,不收集任何数据。 1:收集慢查询数据,默认是100毫秒。 2:收集所有数据 2:开启Profiling和设置 1:通过mongo shell: #查看状态:级别和时间 drug:PRIMARY> db.getProfilingStatus() { "was" : 1, "slowms" : 100 } #查看级别 drug:PRIMARY> db.getProfilingLevel() #设置级别 drug:PRIMARY> db.setProfilingLevel(2) { "was" : 1, "slowms" : 100, "ok" : 1 } #设置级别和时间 drug:PRIMARY> db.setProfilingLevel(1,200) { "was" : 2, "slowms" : 100, "ok" : 1 } 以上要操作要是在test集合下面的话,只对该集合里的操作有效,要是需要对整个实例有效,则需要在所有的集合下设 置或则在开启的时候开启参数: 2:不通过mongo shell: mongod --profile=1 --slowms=15 或则在配置文件里添加2行: profile = 1 slowms = 300 3:关闭Profiling # 关闭 drug:PRIMARY> db.setProfilingLevel(0) { "was" : 1, "slowms" : 200, "ok" : 1 } 4:修改“慢查询日志”的大小 #关闭Profiling drug:PRIMARY> db.setProfilingLevel(0) { "was" : 0, "slowms" : 200, "ok" : 1 } #删除system.profile集合 drug:PRIMARY> db.system.profile.drop() true #创建一个新的system.profile集合 drug:PRIMARY> db.createCollection( "system.profile", { capped: true, size:4000000 } ) { "ok" : 1 } #重新开启Profiling drug:PRIMARY> db.setProfilingLevel(1) { "was" : 0, "slowms" : 200, "ok" : 1 } 注意:要改变Secondary的system.profile的大小,你必须停止Secondary,运行它作为一个独立的,然后再执行上述 步骤。完成后,重新启动加入副本集。 慢查询(system.profile)说明: 通过下面的例子说明,更多信息见:http://docs.mongodb.org/manual/reference/database-profiler/ (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |