亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

基于MongoDB數據庫索引構建情況全面分析

2020-03-14 12:55:23
字體:
來源:轉載
供稿:網友

前面的話

本文將詳細介紹MongoDB數據庫索引構建情況分析

概述

創建索引可以加快索引相關的查詢,但是會增加磁盤空間的消耗,降低寫入性能。這時,就需要評判當前索引的構建情況是否合理。有4種方法可以使用

1、mongostat工具

2、profile集合介紹

3、日志

4、explain分析

mongostat

mongostat是mongodb自帶的狀態檢測工具,在命令行下使用。它會間隔固定時間獲取mongodb的當前運行狀態,并輸出。如果發現數據庫突然變慢或者有其他問題的話,首先就要考慮采用mongostat來查看mongo的狀態

mongostat是查看mongodb運行狀態的程序,使用方式如下

mongostat -h ip:port

【字段說明】

insert/s : 每秒插入數據庫的對象數量,如果是slave,則數值前有*,則表示復制集操作query/s : 每秒的查詢操作次數update/s : 每秒的更新操作次數delete/s : 每秒的刪除操作次數getmore/s: 每秒查詢cursor(游標)時的getmore操作數command: 每秒執行的命令數,在主從系統中會顯示兩個值(例如 3|0),分別代表 本地|復制 命令dirty: 臟數據字節的緩存百分比used:正在使用中的緩存百分比flushes:checkpoint的觸發次數在一個輪詢間隔期間。一般都是0,間斷性會是1, 通過計算兩個1之間的間隔時間,可以大致了解多長時間flush一次。flush開銷是很大的,如果頻繁的flush,可能就要找找原因了vsize: 虛擬內存使用量,單位MB res: 物理內存使用量,單位MB。 res會慢慢的上升,如果res經常突然下降,要查看下是否有別的程序狂吃內存qr: 客戶端等待從MongoDB實例讀數據的隊列長度qw:客戶端等待從MongoDB實例寫入數據的隊列長度ar: 執行讀操作的活躍客戶端數量aw: 執行寫操作的活客戶端數量。如果ar或aw數值很大,那么就是DB被堵住了,DB的處理速度不及請求速度。查看是否有開銷很大的慢查詢。如果查詢一切正常,確實是負載很大,就需要加機器了netIn:MongoDB實例的網絡進流量netOut:MongoDB實例的網絡出流量conn: 打開連接的總數,是qr,qw,ar,aw的總和time:當前時間

【實例】

插入100000條數據,并打開mongostat查詢mongodb運行狀態

mongodb,數據庫,索引

由下圖看出,插入值insert值在插入數據時大量增加,在插入完畢后變成0。flush兩個1之間的間隔時間很長,說明性能還不錯;res在慢慢上升,沒有出現突然下降的情況,說明沒有其他的程序大量占用內容的情況;qrw及arw數據很小,說明數據庫讀寫狀態正常,負載較小??傮w而言,mongodb數據庫運行狀態良好

mongodb,數據庫,索引

profile

mongodb可以通過profile來監控數據,進行優化

【級別】

首先,要查看當前是否開啟profile功能

使用下面的命令會返回level等級,值為0|1|2,0代表關閉,即不記錄任何操作;1代表記錄慢命令(默認值為100ms),即記錄運行時間超過100ms的操作;2代表全部,即記錄任何操作

db.getProfilingLevel() 

使用下面的命令可以設置level等級

db.setProfilingLevel() 

如下圖所示,默認地,profile關閉。使用setProfilingLevel()方法以50ms慢命令的方式開啟profile

mongodb,數據庫,索引

【狀態】

操作被記錄到system.profile集合中

mongodb,數據庫,索引

通過db.system.profile.find() 查看當前的監控日志

mongodb,數據庫,索引
mongodb,數據庫,索引
op:操作類型ns:命名空間query:查詢字符串responseLength:返回長度ts:時間mills:執行耗時

【使用】

在系統中開啟profile之后,如果profile記錄的數據非常大,會比較明顯的降低系統的性能。因此,profile的使用場景一般是新系統上線之前的測試階段,以及剛上線時的觀察階段,查看數據庫的設計及應用程序的使用是否正常。如果profile記錄了大量的字段,需要調整系統附在、調整索引等,減小它的大小

日志

在配置日志文件時,可以使用verbose參數來配置日志詳細程度,參數值從'v'到'vvvvv','v'越多,詳細度越高

日志會記錄mongodb的運行狀態,包括連接時間、當前正在進行的操作等

mongodb,數據庫,索引

explain

MongoDB 提供了一個 explain 命令讓我們獲知系統如何處理查詢請求。利用 explain 命令,可以很好地觀察系統如何使用索引來加快檢索,同時可以針對性優化索引

explain有三種模式,分別是:queryPlanner、executionStats、allPlansExecution?,F實開發中,常用的是executionStats模式

首先,插入10萬條數據

mongodb,數據庫,索引

在time字段上建立索引

mongodb,數據庫,索引

接著,尋找time范圍在100和200之間的文檔,并使用explain()

結果分為queryPlanner、executionStats和serverInfo三個部分。接下來,將分別對這三個部分的結果進行詳細分析

【queryPlanner】

mongodb,數據庫,索引

queryPlanner.plannerVersion: 版本

queryPlanner.namespace: 查詢的表

queryPlanner.indexFilterSet: 針對該query是否有indexfilter

queryPlanner.parsedQuery: 查詢條件

queryPlanner.winningPlan: 查詢優化器針對該query所返回的最優執行計劃的詳細內容

queryPlanner.winningPlan.stage: 最優執行計劃的stage

queryPlanner.winningPlan.inputStage: 用來描述子stage,并且為其父stage提供文檔和索引關鍵字。

queryPlanner.winningPlan.inputstage.stage,此處是IXSCAN,表示進行的是index scanning

queryPlanner.winningPlan.inputstage.keyPattern: 索引鍵值對

queryPlanner.winningPlan.inputstage.indexName:索引名稱

queryPlanner.winningPlan.inputstage.isMultiKey: 是否是Multikey,此處返回是false,如果索引建立在array上,此處將是true

queryPlanner.winningPlan.inputstage.direction:查詢順序,此處是forward,如果用了.sort({time:-1})將顯示backward

queryPlanner.winningPlan.inputstage.indexBounds: 所掃描的索引范圍

queryPlanner.rejectedPlans:其他執行計劃

【executionStats】

mongodb,數據庫,索引

executionStats.executionSuccess: 是否成功

executionStats.nReturned: 查詢返回條目個數

executionStats.totalKeysExamined: 索引掃描條目個數

executionStats.totalDocsExamined: 文檔掃描條目個數

executionStats.executionStages.stage: 掃描類型

executionStats.executionTimeMillis: 整體查詢時間

executionStats.executionStages.executionTimeMillisEstimate: 根據索引檢索文檔獲得數據的時間

executionStats.executionStages.inputStage.executionTimeMillisEstimate: 掃描索引所用時間

【serverInfo】

mongodb,數據庫,索引

serverInfo.host: 主機名

serverInfo.port: 端口

serverInfo.version: 版本

serverInfo.gitVersion: git版本

【性能分析】

1、執行時間

executionTimeMillis值越小越好

2、條目數量

最理想的狀態是: nReturned=totalKeysExamined=totalDocsExamined

3、stage類型

stage的類型列舉如下:

COLLSCAN:全表掃描IXSCAN:索引掃描FETCH:根據索引去檢索指定documentSHARD_MERGE:將各個分片返回數據進行mergeSORT:表明在內存中進行了排序LIMIT:使用limit限制返回數SKIP:使用skip進行跳過IDHACK:針對_id進行查詢SHARDING_FILTER:通過mongos對分片數據進行查詢COUNT:利用db.coll.explain().count()之類進行count運算COUNTSCAN:count不使用Index進行count時的stage返回COUNT_SCAN:count使用了Index進行count時的stage返回SUBPLA:未使用到索引的$or查詢的stage返回TEXT:使用全文索引進行查詢時候的stage返回PROJECTION:限定返回字段時候stage的返回

不希望看到包含如下的stage:

COLLSCAN(全表掃描)SORT(使用sort但是無index)不合理的SKIPSUBPLA(未用到index的$or)COUNTSCAN(不使用index進行count)

以上這篇基于MongoDB數據庫索引構建情況全面分析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大人香蕉在线| 日韩欧美亚洲成人| 91免费的视频在线播放| 曰本色欧美视频在线| 日韩专区在线播放| 亚洲欧美日韩一区二区三区在线| 亚洲精品成a人在线观看| 最近2019中文字幕在线高清| 欧美激情视频网址| 精品久久久久久久久久久久| 国产亚洲视频在线| 久久综合久久88| 国产成人精品最新| 亚洲日韩中文字幕在线播放| 欧美亚洲激情在线| 日韩在线观看精品| 久久久久久国产精品三级玉女聊斋| 国产在线不卡精品| 欧美性猛交xxxxx免费看| 91在线视频精品| 日韩av在线直播| 97国产精品人人爽人人做| www.久久久久| 日韩激情av在线播放| 亚洲女同性videos| 亚洲精品国产精品国自产观看浪潮| 57pao成人永久免费视频| 亚洲视频精品在线| 国产美女精彩久久| 午夜精品理论片| 欧美精品性视频| 日韩在线观看视频免费| 欧美成人h版在线观看| 欧美黑人国产人伦爽爽爽| 国产视频一区在线| 黄色一区二区三区| 欧美在线视频观看免费网站| 亚洲尤物视频网| 国产激情久久久久| 国产精品视频网站| 精品视频久久久久久| 日日狠狠久久偷偷四色综合免费| 久久久久久有精品国产| 国产精品狼人色视频一区| 少妇高潮 亚洲精品| 中文字幕国产亚洲2019| 欧美激情欧美狂野欧美精品| 精品人伦一区二区三区蜜桃免费| 国产欧美亚洲视频| 久久久av免费| 久久中文久久字幕| 精品国产一区二区三区久久狼5月| 日韩中文字幕在线| 国产精品稀缺呦系列在线| 在线日韩中文字幕| 亚洲理论电影网| 国产欧美精品一区二区三区介绍| 日韩欧美国产一区二区| 成人性生交大片免费看视频直播| 亚洲bt欧美bt日本bt| 欧美日韩成人在线视频| 国产亚洲人成a一在线v站| 中文字幕一区二区精品| 久久久久久九九九| 欧美久久精品一级黑人c片| 亚洲国产欧美一区二区三区同亚洲| 亚洲免费电影在线观看| 亚洲人成电影网站色…| 自拍视频国产精品| 亚洲欧美日韩在线一区| 欧美激情在线狂野欧美精品| 性色av一区二区三区在线观看| 国产午夜精品免费一区二区三区| 日韩av黄色在线观看| 久久精品国产96久久久香蕉| 久久理论片午夜琪琪电影网| 日韩欧美国产网站| 久久中文字幕国产| 亚洲色图欧美制服丝袜另类第一页| 亚洲性夜色噜噜噜7777| 亚洲国产精品专区久久| 国产精品99久久久久久久久久久久| 日韩av免费在线播放| 久久久精品一区二区| 九九久久国产精品| 亚洲欧美国产一本综合首页| 91香蕉国产在线观看| 日韩亚洲欧美中文高清在线| 高跟丝袜欧美一区| 在线亚洲午夜片av大片| 精品美女永久免费视频| 欧美一级片在线播放| 欧美成人网在线| 蜜臀久久99精品久久久久久宅男| 欧美自拍视频在线| 亚洲国产成人91精品| 福利一区福利二区微拍刺激| 91精品国产高清| 日韩欧美一区二区三区久久| 亚洲永久在线观看| 欧美日韩国产中文字幕| 久久国产精彩视频| 亚洲精品中文字| 国产精品白嫩美女在线观看| 国产成人高清激情视频在线观看| 亚洲自拍偷拍视频| 亚洲第一区第一页| 日韩性xxxx爱| 久久久亚洲网站| 亚洲第一精品夜夜躁人人爽| 亚洲精品国偷自产在线99热| 日韩av快播网址| 欧美性色视频在线| 久久视频免费在线播放| 午夜精品99久久免费| 亚洲男女自偷自拍图片另类| 欧美超级乱淫片喷水| 最近的2019中文字幕免费一页| 日韩欧美一区二区三区久久| 日韩中文字幕久久| 国产精品日韩av| 日韩美女激情视频| 97精品伊人久久久大香线蕉| 精品视频在线播放| 国外色69视频在线观看| 九九热精品视频在线播放| 欧美日韩一区二区免费在线观看| 97碰在线观看| 久久中文字幕视频| 亚洲欧洲日产国码av系列天堂| 精品国内产的精品视频在线观看| 欧美亚洲伦理www| 日韩欧美福利视频| 日本人成精品视频在线| 一本一本久久a久久精品牛牛影视| 性欧美视频videos6一9| 精品国产鲁一鲁一区二区张丽| 欧美一乱一性一交一视频| 久久久亚洲精品视频| 日韩欧美第一页| 国产精品日韩精品| 欧美国产在线电影| 国产精品日韩专区| 久久99久久久久久久噜噜| 亚洲午夜久久久影院| 久久免费视频在线| 黑人精品xxx一区| 欧美成人精品在线观看| 97在线精品国自产拍中文| 久久久久一本一区二区青青蜜月| 久久久久久国产精品美女| 精品久久久久久久久久国产| 成人午夜在线观看| 欧美成人久久久| 欧美疯狂做受xxxx高潮| 亚洲一区美女视频在线观看免费| 亚洲免费视频一区二区| 欧美色图在线视频| 久久久999精品| 日本老师69xxx| 亚洲国产精品美女| 欧美一区亚洲一区| 91久久嫩草影院一区二区| 中文字幕欧美精品日韩中文字幕|