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" }
Comment