時間:2024-02-09 10:40作者:下載吧人氣:15
前面的話
本文將詳細(xì)介紹MongoDB數(shù)據(jù)庫索引構(gòu)建情況分析
概述
創(chuàng)建索引可以加快索引相關(guān)的查詢,但是會增加磁盤空間的消耗,降低寫入性能。這時,就需要評判當(dāng)前索引的構(gòu)建情況是否合理。有4種方法可以使用
1、mongostat工具
2、profile集合介紹
3、日志
4、explain分析
mongostat
mongostat是mongodb自帶的狀態(tài)檢測工具,在命令行下使用。它會間隔固定時間獲取mongodb的當(dāng)前運行狀態(tài),并輸出。如果發(fā)現(xiàn)數(shù)據(jù)庫突然變慢或者有其他問題的話,首先就要考慮采用mongostat來查看mongo的狀態(tài)
mongostat是查看mongodb運行狀態(tài)的程序,使用方式如下
mongostat -h ip:port
【字段說明】
insert/s : 每秒插入數(shù)據(jù)庫的對象數(shù)量,如果是slave,則數(shù)值前有*,則表示復(fù)制集操作 query/s : 每秒的查詢操作次數(shù) update/s : 每秒的更新操作次數(shù) delete/s : 每秒的刪除操作次數(shù) getmore/s: 每秒查詢cursor(游標(biāo))時的getmore操作數(shù) command: 每秒執(zhí)行的命令數(shù),在主從系統(tǒng)中會顯示兩個值(例如 3|0),分別代表 本地|復(fù)制 命令 dirty: 臟數(shù)據(jù)字節(jié)的緩存百分比 used:正在使用中的緩存百分比 flushes:checkpoint的觸發(fā)次數(shù)在一個輪詢間隔期間。一般都是0,間斷性會是1, 通過計算兩個1之間的間隔時間,可以大致了解多長時間flush一次。flush開銷是很大的,如果頻繁的flush,可能就要找找原因了 vsize: 虛擬內(nèi)存使用量,單位MB res: 物理內(nèi)存使用量,單位MB。 res會慢慢的上升,如果res經(jīng)常突然下降,要查看下是否有別的程序狂吃內(nèi)存 qr: 客戶端等待從MongoDB實例讀數(shù)據(jù)的隊列長度 qw:客戶端等待從MongoDB實例寫入數(shù)據(jù)的隊列長度 ar: 執(zhí)行讀操作的活躍客戶端數(shù)量 aw: 執(zhí)行寫操作的活客戶端數(shù)量。如果ar或aw數(shù)值很大,那么就是DB被堵住了,DB的處理速度不及請求速度。查看是否有開銷很大的慢查詢。如果查詢一切正常,確實是負(fù)載很大,就需要加機器了 netIn:MongoDB實例的網(wǎng)絡(luò)進流量 netOut:MongoDB實例的網(wǎng)絡(luò)出流量 conn: 打開連接的總數(shù),是qr,qw,ar,aw的總和 time:當(dāng)前時間
網(wǎng)友評論