a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

MongoDB如何查詢耗時(shí)記錄的方法詳解

2020-10-29 18:45:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

準(zhǔn)備

在此之前,我們先在我們的數(shù)據(jù)庫(kù)中插入10萬(wàn)條數(shù)據(jù)。數(shù)據(jù)的格式是這樣的:

{ "name":"your name", "age":22, "gender":"male", "grade":2}

explain

explain方法是用來(lái)查看db.collecion.find()的一些查詢信息的。例如:

db.collectionName.find().explain()

explain方法有個(gè)可選的參數(shù)verbose,是個(gè)字符串,他表示的是verbose的模式。一共分為3種模式:

queryPlanner:默認(rèn)參數(shù),詳細(xì)說(shuō)明查詢優(yōu)化器選擇的計(jì)劃并列出被拒絕的計(jì)劃。例如:

db.students.find({grade:1}).explain()

executionStats:MongoDB運(yùn)行查詢優(yōu)化器選擇獲勝的計(jì)劃,執(zhí)行計(jì)劃,完成并返回成功,統(tǒng)計(jì)描述的勝利計(jì)劃的執(zhí)行。例如:

db.students.find({grade:1}).explain("executionStats")


allPlansExecution:MongoDB返回描述獲獎(jiǎng)計(jì)劃的執(zhí)行以及對(duì)其他候選人統(tǒng)計(jì)計(jì)劃選擇方案時(shí)捕獲的統(tǒng)計(jì)。
我們的目的是要記錄執(zhí)行find方法的耗時(shí)時(shí)間,所以用executionStats模式就可以了。

返回的結(jié)果也是只關(guān)注executionStats就可以了,如下圖:


  1. nReturned:表示該查詢條件下返回的文檔數(shù)量。
  2. executionTimeMills:表示執(zhí)行時(shí)間,單位毫秒
  3. totalDocsExamined:表示該集合總共文檔數(shù)。

其他的屬性在這里就不多說(shuō)了,記錄耗時(shí)我們只取executionTimeMills.

Profiling

上面提到的方法好像是只適用find方法,對(duì)于一些聚合查詢之類的查詢方法就無(wú)法統(tǒng)計(jì)耗時(shí)時(shí)間了。這里再介紹一個(gè)profiling方法記錄查詢耗時(shí)時(shí)間。

開(kāi)啟 Profiling 功能

有兩種方式可以控制 Profiling 的開(kāi)關(guān)和級(jí)別,第一種是直接在啟動(dòng)參數(shù)里直接進(jìn)行設(shè)置。