亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

mongodb 利用率高如何解決

發布時間:2021-07-24 16:58:43 來源:億速云 閱讀:132 作者:Leah 欄目:關系型數據庫

本篇文章為大家展示了mongodb 利用率高如何解決,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Step1: 分析數據庫正在執行的請求

db.currentOp() 

client:請求是由哪個客戶端發起的?

opid:操作的opid,有需要的話,可以通過 db.killOp(opid) 直接干掉的操作

secs_running/microsecs_running: 這個值重點關注,代表請求運行的時間,如果這個值特別大,就得注意了,看看請求是否合理

query/ns: 這個能看出是對哪個集合正在執行什么操作

lock*:還有一些跟鎖相關的參數

Step2:分析數據庫慢請求

MongoDB 支持 profiling 功能,將請求的執行情況記錄到同DB下的 system.profile 集合里,profiling 有3種模式

profiling 設置文檔在這里,多看官網文檔

關閉 profiling

針對所有請求開啟 profiling,將所有請求的執行都記錄到 system.profile 集合

針對慢請求 profiling,將超過一定閾值的請求,記錄到system.profile 集合

默認請求下,MongoDB 的 profiling 功能是關閉,生產環境建議開啟,慢請求閾值可根據需要定制,如不確定,直接使用默認值100ms。

設置100ms的慢請求

db.setProfilingLevel(1, { slowms: 100 })

在開啟了慢請求 profiling 的情況下(MongoDB 云數據庫是默認開啟慢請求 profiling的),我們對慢請求的內容進行分析,來找出可優化的點,常見的包括。

profiling的結果輸出含義在這里,多看官網文檔

CPU殺手1:全表掃描

全集合(表)掃描 COLLSCAN,當一個查詢(或更新、刪除)請求需要全表掃描時,是非常耗CPU資源的,所以當你在 system.profile 集合 或者 日志文件發現 COLLSCAN 關鍵字時,就得注意了,很可能就是這些查詢吃掉了你的 CPU 資源;確認一下,如果這種請求比較頻繁,最好是針對查詢的字段建立索引來優化。

一個查詢掃描了多少文檔,可查看 system.profile 里的 docsExamined 的值,該值越大,請求CPU開銷越大。

> 關鍵字:COLLSCAN、 docsExamined

CPU殺手2:不合理的索引

有的時候,請求即使查詢走了索引,執行也很慢,通常是因為合理建立不太合理(或者是匹配的結果本身就很多,這樣即使走索引,請求開銷也不會優化很多)

如下所示,假設某個集合的數據,x字段的取值很少(假設只有1、2),而y字段的取值很豐富。

{ x: 1, y: 1 }

{

{ x: 1, y: 2 }

{

{ x: 1, y: 3 }

.

......

{

{ x: 1, y: 100000} 

{

{ x: 2, y: 1 }

{

{ x: 2, y: 2 }

{

{ x: 2, y: 3 }

.

......

{

{ x: 1, y: 100000} 

要服務 {x: 1: y: 2} 這樣的查詢

db.createIndex( {y: 1 } )        效果好,因為y相同取值很少

d

db.createIndex( {y: 1, x: 1 } )  效果好,因為y相同取值少

一個走索引的查詢,掃描了多少條索引,可查看 system.profile 里的 keysExamined 字段,該值越大,CPU 開銷越大。

>關鍵字:IXSCAN、keysExamined

CPU殺手3:大量數據排序

當查詢請求里包含排序的時候,如果排序無法通過索引滿足,MongoDB 會在內存李結果進行排序,而排序這個動作本身是非常耗 CPU 資源的,優化的方法仍然是建立索引,對經常需要排序的字段,建立索引。

當你在 system.profile 集合 或者 日志文件發現 SORT 關鍵字時,就可以考慮通過索引來優化排序。當請求包含排序階段時, system.profile 里的 hasSortStage 字段會為 true。

> 關鍵字:SORT、hasSortStage

======================MongodDB shard key片鍵選擇=====================

主要考慮key的「離散度」以及「頻率」,離散度越高越好,能更好的分散數據;頻率越低越好,避免出現熱點;

===========MongoDB 連接串樣例========================

正確連接分片集群的姿勢

要正確連接復制集,需要先了解下MongoDB的Connection String URI,所有官方的driver都支持以 Connection String 的方式來連接 MongoDB 分片集群。

下面就是Connection String包含的主要內容

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb:// 前綴,代表這是一個Connection String

username:password@ 如果啟用了鑒權,需要指定用戶密碼

hostX:portX 多個 mongos 的地址列表

/database 鑒權時,用戶帳號所屬的數據庫

?options 指定額外的連接選項

上述內容就是mongodb 利用率高如何解決,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

无棣县| 穆棱市| 当雄县| 夏津县| 天水市| 任丘市| 娄烦县| 雷州市| 宜昌市| 秦安县| 万载县| 辽中县| 溆浦县| 通渭县| 石城县| 神木县| 潞城市| 安丘市| 米林县| 凌海市| 连城县| 林州市| 屯昌县| 甘谷县| 灵寿县| 任丘市| 盐池县| 定兴县| 博客| 临潭县| 万荣县| 杭锦后旗| 金山区| 鄂托克旗| 微博| 芷江| 荔波县| 永兴县| 苏尼特右旗| 玛纳斯县| 驻马店市|