MongoDB中trace Query跟踪查询的方法

MongoDB中可以使用db.setProfilingLevel的方法来跟踪查询语句,语法为db.setProfilingLevel(level, slowms)。其作用是修改当前数据库的PROFILER级别来让数据库记录更多的性能数据。

LEVEL 参数:制定profiling的级别,0是不跟踪,1代表只跟踪慢的操作,2代表跟踪所有操作。

slowms 参数:设置的时间阈值,大于该阈值则认为查询是慢的SLOW的

设置LEVEL=2可能会少量影响MongoDB性能,由于查询的历史将被记录到日志,所以也可能存在安全风险。

也可以通过设置slowOpThresholdMs参数来指定慢的查询,默认为100ms。

mongod会将大于slowOpThresholdMs指定时间的查询记录到mongod.log日志中。

使用方法:

 

db.setProfilingLevel(2);
{ "was" : 0, "slowms" : 100, "ok" : 1 }

> db.test.count();
50000

> db.system.profile.find();
{ "op" : "insert", "ns" : "test.test", "query" : { "_id" : ObjectId("55813154648066edd8eda678"), "a" : 48087, "b" : 48088, "c" : 48089, "d" : 48090, "e" : [ 1, 2, 3, 4, 5, 6, 48086 ] }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "millis" : 0, "execStats" : {  }, "ts" : ISODate("2015-06-17T08:35:32.967Z"), "client" : "127.0.0.1", "allUsers" : [ { "user" : "maclean", "db" : "test" } ], "user" : "maclean@test" }


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *