三種快速最佳化MongoDB的方法,從此最佳化不再難!

陝西優就業發表於2019-04-03

網際網路的發展和電子商務平臺的崛起,催生了大資料時代的來臨,作為大資料典型開發框架的MongoDB成為了No-sql資料庫的典型代表。

那麼,在使用過程中你有沒有遇到MongoDB資料庫的效能問題?本文就給大家講解幾個MongoDB效能最佳化技巧。

1、保持檔案簡單

MongoDB是一個無架構的資料庫。這意味著預設情況下沒有預定義的架構。我們可以在較新的版本中新增預定義的架構,但它不是必需的。請注意使用嵌入式文件和陣列時遇到的困難,因為在應用程式端/ ETL過程中解析資料會變得非常複雜。此外,陣列可能會損害複製效能:對於陣列中的每個更改,都會複製所有陣列值!

在MMAPv1中,選擇正確的欄位名稱非常重要,因為資料庫需要儲存每個文件的欄位名稱。這與在關聯式資料庫中儲存模式不同。讓我們想象一下 ,如果你有一百萬個檔案,一個名為lastmessage的欄位從感測器中獲取的資料會花費你多少:大約28 MB只是為了儲存這個欄位名稱!十個欄位的集合將需要280MB(僅用於儲存空文件)。

幾乎達到此文件大小的文件是不可取的,因為資料庫需要大量頁面才能處理單個文件。這需要更多的CPU週期來完成任何操作。

2、閱讀Preference和writeConcern

讀取首選項和writeConcern根據公司的要求而有所不同。但請記住,新的MongoDB版本(3.6)使用writeConcern:“多數”和readConcern:“主要”。

這意味著它必須承認至少在所有寫入((N / 0.5)+1)的寫入,其中N是副本集中例項的數量。這可能會很慢。然而,這對於速度的一致性來說是一個公平的權衡。

請確保你使用的是最適合您的閱讀偏好,並在你的公司中撰寫關注。驅動程式始終從主伺服器讀取,但如果它不是你的環境要求,請考慮將查詢分發到其他例項中。如果不這樣做,這些例項僅用於故障轉移,並且不會在常規操作中使用。

3.工作集

工作集有多大?通常,應用程式不使用所有資料。有些資料經常更新,而其他資料則沒有。

您的工作資料集是否適合RAM?當所有工作資料集都在RAM中時,會出現最佳效能。像頁面錯誤一樣,Wome的慢度可能會影響效能,具體取決於您使用的內容。

讀取(例如備份,ETL或初級報告)可能會嚴重影響效能,因為存在快取中頁面的競爭。大型報告或聚合也是如此。 將多個集合用於多種用途並將特定機器用於特定目的(例如使用區域來儲存將不再使用的文件)將有助於實現簡單和預期的工作集。

以上就是我們為你整理的MongoDB最佳化技巧了,希望能對你有所幫助。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2640216/,如需轉載,請註明出處,否則將追究法律責任。

相關文章