中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB Database Profiling

發布時間:2020-06-03 07:34:16 來源:網絡 閱讀:2326 作者:UltraSQL 欄目:MongoDB數據庫

MongoDB Database Profiling



MongoDB Profiler是一個捕獲數據庫執行活動的系統,它可以幫助識別慢查詢和操作。

 

Profiling級別



可用的捕獲級別意義如下:


級別 設置

0 禁用

1 啟用,只記錄慢操作

2 啟用,記錄所有操作

 

查看Profiling級別


> db.getProfilingLevel()

 

啟用Profiler


> db.setProfilingLevel(1)

完整命令為:

db.setProfilingLevel(level,slowms)


當level為1的時候,慢操作的默認值為100ms,若指定慢操作為500ms:

> db.setProfilingLevel(1,500)

 

注意:

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

只在關鍵時候啟用Profiling,盡量不要在生產環境啟用它。

基于獨立mongod實例啟用Profiling。該設置將不會通過副本集或分片集群擴散到其他實例。

 

查看Profiler結果



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

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

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

 

Profiler信息內容詳解



ts-該命令在何時執行.

millis Time-該命令執行耗時,以毫秒記.

info-本命令的詳細信息.

query-表明這是一個query查詢操作.

ntoreturn-本次查詢客戶端要求返回的記錄數.比如, findOne()命令執行時 ntoreturn 為 1.有limit(n) 條件時ntoreturn為n.


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

nscanned-本次查詢掃描的記錄數.

reslen-返回結果集的大小.

nreturned-本次查詢實際返回的結果集.

update-表明這是一個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參數為true.此參數的功能是如果update的記錄不存在,則用update的條件insert一條記錄.

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


insert-這是一個insert插入操作.

getmore-這是一個getmore 操作,getmore通常發生在結果集比較大的查詢時,第一個query返回了部分結果,后續的結果是通過getmore來獲取的。

 

性能優化

 

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

tail -f /data/var/log/mongodb/mongod.log
Mon 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(掃描的記錄數)遠大于nreturned(返回結果的記錄數)的話,那么我們就要考慮通過加索引來優化記錄定位了。


reslen 如果過大,那么說明我們返回的結果集太大了,這時請查看find函數的第二個參數是否只寫上了你需要的屬性名。


對于創建索引的建議是:如果很少讀,那么盡量不要添加索引,因為索引越多,寫操作會越慢。如果讀量很大,那么創建索引還是比較劃算的。

 

參見:

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

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大连市| 新乡市| 芦溪县| 惠东县| 潢川县| 万荣县| 拜城县| 汝城县| 德保县| 三明市| 弥渡县| 文登市| 万盛区| 青浦区| 会理县| 察哈| 新巴尔虎右旗| 长阳| 肇源县| 察隅县| 景东| 石林| 噶尔县| 古浪县| 吴桥县| 高邑县| 凉城县| 巴里| 壶关县| 门头沟区| 灵石县| 全南县| 岚皋县| 鹿邑县| 海盐县| 襄垣县| 泸溪县| 襄汾县| 海丰县| 交城县| 淮阳县|