準備
在此之前,我們先在我們的數據庫中插入10萬條數據。數據的格式是這樣的:
{ "name":"your name", "age":22, "gender":"male", "grade":2}
explain
explain方法是用來查看db.collecion.find()
的一些查詢信息的。例如:
db.collectionName.find().explain()
explain方法有個可選的參數verbose,是個字符串,他表示的是verbose的模式。一共分為3種模式:
queryPlanner:默認參數,詳細說明查詢優化器選擇的計劃并列出被拒絕的計劃。例如:
db.students.find({grade:1}).explain()
executionStats:MongoDB運行查詢優化器選擇獲勝的計劃,執行計劃,完成并返回成功,統計描述的勝利計劃的執行。例如:
db.students.find({grade:1}).explain("executionStats")
allPlansExecution:MongoDB返回描述獲獎計劃的執行以及對其他候選人統計計劃選擇方案時捕獲的統計。
我們的目的是要記錄執行find方法的耗時時間,所以用executionStats模式就可以了。
返回的結果也是只關注executionStats就可以了,如下圖:
其他的屬性在這里就不多說了,記錄耗時我們只取executionTimeMills.
Profiling
上面提到的方法好像是只適用find方法,對于一些聚合查詢之類的查詢方法就無法統計耗時時間了。這里再介紹一個profiling方法記錄查詢耗時時間。
開啟 Profiling 功能
有兩種方式可以控制 Profiling 的開關和級別,第一種是直接在啟動參數里直接進行設置。