
想使用 MongoDB ,你應該了解這8個方面!
應用性能高低依賴于數(shù)據(jù)庫性能,MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫,旨在為 WEB 應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB 是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的。
本文針對實時監(jiān)控 MongoDB 數(shù)據(jù)庫,總結(jié)了一些使用的工具以及需要重點注意的性能方面。
MongoDB 用自己的工具來統(tǒng)計現(xiàn)在運行的 MongoDB 服務器的數(shù)據(jù),并進行實時報告分析:
mongostat:可以展示像 opcounts,lock%,內(nèi)存使用以及副本集更新狀態(tài)等關鍵指標,因為可以實時看到發(fā)生的狀況,所以一般用于故障除疑。
mongotop:mongostat 提供的是全局指標,而 mongotop 則提供追蹤 MongoDB 實例花費在讀寫操作數(shù)據(jù)的時間指標,提供每個集合級別的統(tǒng)計數(shù)據(jù)。
is.status():返回的是當前服務器節(jié)點執(zhí)行操作后副本集的狀態(tài),通過這個來實時查看集群的變化。
sh.status():返回你的分片集群的狀態(tài),尤其是每塊碎片的數(shù)量,顯示關于分片集群的現(xiàn)有區(qū)塊的信息的格式化的報告,如果區(qū)塊大于等于20就不顯示詳細塊信息。
內(nèi)存可能是你可以給 MongoDB 的最重要的資源,因為 Mongodb 是相當吃內(nèi)存的,如果控制不好的話,mongodb會掛掉。。。所以你要確保你給的內(nèi)存總是有足夠的!經(jīng)驗之談是提供符合索引數(shù)量的足夠的 RAM,如果可能的話,為所有數(shù)據(jù)提供足夠的內(nèi)存。
常駐內(nèi)存是這里的關鍵指標,MongoDB 內(nèi)存 mem 記錄了 Mongod 的系統(tǒng)架構(gòu)和內(nèi)存使用。
頁面錯誤和內(nèi)存相關因為頁面錯誤發(fā)生時是 MongoDB 去磁盤里面查找數(shù)據(jù)而不是內(nèi)存中,如果內(nèi)存的數(shù)量不能滿足性能需求,那么你將會看到頁面錯誤,隨著頁面錯誤率的上升,opcounters 最終會低于期望值,所以這時你應該增加可用的 RAM。
連接到 MongoDB 的每個連接都有助于追蹤系統(tǒng)所需的內(nèi)存的開銷。這最初由 Unix 通過 ulimit 來設置限制,但隨后成為由服務器資源,特別是存儲器限制。
過高數(shù)量的連接數(shù)還可以指明問題,例如你的應用程序代碼打開太多的連接,造成某地方產(chǎn)生很高的 lock% 。
有時客戶端和數(shù)據(jù)庫之間的連接數(shù)超出服務器處理請求的能力,這可能會導致在 MongoDB 環(huán)境的應用程序性能的下降。
不多說,實時掌握數(shù)據(jù)庫操作的統(tǒng)計數(shù)據(jù)以及復制和分片操作的詳細信息,確保每秒數(shù)據(jù)庫操作(inserts,query,update,delete,getmore 等 command 命令)的總數(shù)有助于分析和跟蹤數(shù)據(jù)庫的負載。
MongoDB 使用一個全局鎖來確保一致性。但是,如果某些操作是長時間運行的或形成一個隊列,操作等待鎖就會大大降低應用程序性能。
在 MongoDB 2.6版本中,鎖是數(shù)據(jù)庫級別的,一直持續(xù) MongoDB 2.8,寫操作都是一個全局性數(shù)據(jù)庫鎖,MongoDB 使用的這種「readers-writer」鎖,雖然支持并發(fā)但有很大的局限性,當一個讀鎖存在,許多讀操作可以使用這把鎖,然而當一個寫鎖存在時,其它讀寫操作不能使用共享這個鎖,寫入優(yōu)先于讀取,當兩個操作一個讀取和一個寫入正在等待鎖,MongoDB 會授予寫鎖,所以如果寫鎖發(fā)生的過于頻繁,那么你應用的性能出現(xiàn)文件也就不奇怪了。當然如果你的應用中真的有大量的寫操作,可以考慮 Cassandra 數(shù)據(jù)庫。
MongoDB 復制集通過將數(shù)據(jù)部署在多個不同的服務器上,防止因單機故障而造成數(shù)據(jù)的丟失,借助數(shù)據(jù)冗余來提高數(shù)據(jù)的可靠性和安全性。而且還可以通過復制技術(shù)構(gòu)建分布式數(shù)據(jù)庫,提高系統(tǒng)的訪問性能和安全性。
復制集同步數(shù)據(jù)過程是:Primary 節(jié)點寫入數(shù)據(jù),Secondary 通過讀取 Primary 的 oplog 得到復制信息,開始復制數(shù)據(jù)并且將復制信息寫入到自己的 oplog,復制延遲是 Primary 節(jié)點上寫入到 Secondary 節(jié)點讀取 oplog 再寫入操作的延遲,復制延遲可能是一個顯著的問題,嚴重影響 MongoDB 副本集部署,過度復制延遲使「滯后」的節(jié)點將很快成為 Primary ,增加了分布式讀操作不一致的可能性。
分片是在多臺計算機存儲數(shù)據(jù)記錄的過程中 MongoDB 來滿足數(shù)據(jù)增長需求的特有方式。隨著數(shù)據(jù)量的增加,一臺服務器可能不足以存儲數(shù)據(jù)或提供大量的讀寫操作。分片解決了水平擴展的問題,通過分片,可以添加更多的機器來支持數(shù)據(jù)增長以及滿足讀寫操作的需求。
MongoDB 在集合的水平上分割數(shù)據(jù)和分片,通過一個片鍵( shard key )來分割分片。
為了將一個集合分片,需要選擇一個片關鍵字。一個片鍵是一個索引字段,或是存在于每個集合文檔中的一個復合索引字段。選擇正確的分片鍵可以對應用性能,功能以及數(shù)據(jù)庫和集群的運作有很大的影響,合適的分片鍵選擇取決于你的數(shù)據(jù)的架構(gòu)和應用程序的查詢和寫入數(shù)據(jù)的方式。而且 Mongodb 數(shù)據(jù)庫是否能高效運轉(zhuǎn)也取決于你指定了文檔的哪個字段作為分片字段。由于分片字段都是預先選擇且選定后無法更改的,而且考慮到 MongoDB 縱向擴展能力的限制,選擇時就需要深思熟慮了。分片鍵應該滿足以下條件:
分配 — 分片鍵最糟糕的情況是自增的值(當所有的寫操作將被平衡到單個碎片時就意味著”熱碎片”的發(fā)生,而這就是瓶頸)。理想的分片重點應該讀和寫是盡可能多的”隨機分布”。
理想的片鍵主要功能應該是用于查詢,如果大部分的查詢請求都能夠命中盡可能少的分片那就最好了。
一個好的片鍵使得 MongoDB 分配內(nèi)容變的容易。MongoDB 會根據(jù)你的設置將你的數(shù)據(jù)劃分到有著相同片鍵的數(shù)據(jù)塊 (Chunk) 中。而后這些數(shù)據(jù)塊將根據(jù)片鍵的大致順序分散到副本集中。
想要看以上數(shù)據(jù)指標,需要一定的監(jiān)控手段,MongoDB 本身有一堆自己的工具,此外還有開源工具以及第三方廠家提供的監(jiān)控軟件,總結(jié)為一點,監(jiān)控很重要,Cloud Insight 全面監(jiān)控 MongoDB,一工具在手,默認60個數(shù)據(jù)指標,MongoDB 發(fā)生什么都了然于心。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03