MongoDBDatabaseProfiling-創(chuàng)新互聯(lián)

MongoDB Database Profiling

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比莒縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式莒縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋莒縣地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

MongoDB Profiler是一個(gè)捕獲數(shù)據(jù)庫執(zhí)行活動(dòng)的系統(tǒng),它可以幫助識(shí)別慢查詢和操作。

Profiling級(jí)別

可用的捕獲級(jí)別意義如下:

級(jí)別設(shè)置

0 禁用

1 啟用,只記錄慢操作

2 啟用,記錄所有操作

查看Profiling級(jí)別

> db.getProfilingLevel()

啟用Profiler

> db.setProfilingLevel(1)

完整命令為:

db.setProfilingLevel(level,slowms)

當(dāng)level為1的時(shí)候,慢操作的默認(rèn)值為100ms,若指定慢操作為500ms:

> db.setProfilingLevel(1,500)

注意:

在默認(rèn)情況下,mongod記錄所有的慢查詢(由showOpThresholdMs定義,默認(rèn)值為100ms)到MongoDB日志文件中。

只在關(guān)鍵時(shí)候啟用Profiling,盡量不要在生產(chǎn)環(huán)境啟用它。

基于獨(dú)立mongod實(shí)例啟用Profiling。該設(shè)置將不會(huì)通過副本集或分片集群擴(kuò)散到其他實(shí)例。

查看Profiler結(jié)果

使用的是system.profile 來記錄,而system.profile 是一個(gè)capped collection。在你的數(shù)據(jù)庫的system.profile集合,調(diào)用mongo shell命令show profile,或者查詢system.profile集合可以查看Profiler的輸出,如:

db.system.profile.find( { millis : { $gt : 1000 } } )

就可以輸出,查詢時(shí)間大于1秒的慢查詢。

Profiler信息內(nèi)容詳解

ts-該命令在何時(shí)執(zhí)行.

millis Time-該命令執(zhí)行耗時(shí),以毫秒記.

info-本命令的詳細(xì)信息.

query-表明這是一個(gè)query查詢操作.

ntoreturn-本次查詢客戶端要求返回的記錄數(shù).比如, findOne()命令執(zhí)行時(shí) ntoreturn 為 1.有l(wèi)imit(n) 條件時(shí)ntoreturn為n.

query-具體的查詢條件(如x>3).

nscanned-本次查詢掃描的記錄數(shù).

reslen-返回結(jié)果集的大小.

nreturned-本次查詢實(shí)際返回的結(jié)果集.

update-表明這是一個(gè)update更新操作.

fastmod-Indicates a fast modify operation. See Updates. These operations are normally quite fast.

fastmodinsert – indicates a fast modify operation that performed an upsert.

upsert-表明update的upsert參數(shù)為true.此參數(shù)的功能是如果update的記錄不存在,則用update的條件insert一條記錄.

moved-表明本次update是否移動(dòng)了硬盤上的數(shù)據(jù),如果新記錄比原記錄短,通常不會(huì)移動(dòng)當(dāng)前記錄,如果新記錄比原記錄長,那么可能會(huì)移動(dòng)記錄到其它位置,這時(shí)候會(huì)導(dǎo)致相關(guān)索引的更新.磁盤操作更多,加上索引更新,會(huì)使得這樣的操作比較慢.

insert-這是一個(gè)insert插入操作.

getmore-這是一個(gè)getmore 操作,getmore通常發(fā)生在結(jié)果集比較大的查詢時(shí),第一個(gè)query返回了部分結(jié)果,后續(xù)的結(jié)果是通過getmore來獲取的。

性能優(yōu)化

盡管我們沒有啟用Profiler,但在生產(chǎn)環(huán)境中,我們查看日志文件仍可以看到大于100ms的慢操作。

tail -f /data/var/log/mongodb/mongod.logMon May 25 02:57:22.670 [conn756] query MyTest.Pro query: { $query: { CutePath: /^122-133-1456(-\d+)*$/, Avail.Status: { $lt: 5 }, $or: [ { _id: { $lt: 3310 } }, { _id: { $gt: 8520, $lt: 8530 } }, { _id: { $gt: 9720, $lt: 9730 } } ] }, $orderby: { Avail.Status: 1, AvgRate: -1 } } ntoreturn:200 ntoskip:0 nscanned:18764 scanAndOrder:1 keyUpdates:0 numYields: 10 locks(micros) r:217999 nreturned:200 reslen:563505 116ms

如果nscanned(掃描的記錄數(shù))遠(yuǎn)大于nreturned(返回結(jié)果的記錄數(shù))的話,那么我們就要考慮通過加索引來優(yōu)化記錄定位了。

reslen 如果過大,那么說明我們返回的結(jié)果集太大了,這時(shí)請(qǐng)查看find函數(shù)的第二個(gè)參數(shù)是否只寫上了你需要的屬性名。

對(duì)于創(chuàng)建索引的建議是:如果很少讀,那么盡量不要添加索引,因?yàn)樗饕蕉啵瑢懖僮鲿?huì)越慢。如果讀量很大,那么創(chuàng)建索引還是比較劃算的。

參見:

http://docs.mongodb.org/manual/administration/analyzing-mongodb-performance/#database-profiling

http://docs.mongodb.org/master/MongoDB-crud-guide.pdf

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:MongoDBDatabaseProfiling-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article30/coedpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、商城網(wǎng)站品牌網(wǎng)站設(shè)計(jì)外貿(mào)建站、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司