MongoDB使用過程中遇到的幾個問題

2021-10-03 23:15:40 字數 1188 閱讀 3144

1.因物業停電導致機房斷電,伺服器宕機,mongodb無法重啟的問題。

刪除資料存放目錄下的.lock檔案,然後進行啟動即可。

2.單點單個collection資料過多,查詢效能明顯降低的問題。

至今總共經過了兩個階段的優化。

第一階段:單個collection的資料超過12w時,查詢效能明顯下降。

經過是這樣的,系統上線一段時間後,某一天領導突然告訴我說「今天有員工反應,xx頁面突然變慢了,很奇怪昨天都還是很快的」。「是哪幾位同事反應說慢的?我去具體問明一下情況」,得知反應問題的同事後,我立即打**過去問明了情況,並通過測試帳號重現了該問題。隨後我開啟專用筆記本,連上應用伺服器top了一下,發現一切正常。隨即ssh到db伺服器top了一下,發現mongodb對資源的占用相當高(cpu、記憶體)。mongodb本身有記錄慢查詢的功能,但預設是不開啟的,恰巧我們mongodb就沒有開啟記錄功能,所以直接通過db檢視慢查詢的路子不通;隨後分析了一下慢頁面涉及到的collection,發現只有xx collection的資料量較多,通過測試最終確認就是該collection慢導致,隨後分析了所有該collection的查詢功能,並根據分析的結果在mongodb中建立索引,問題解決。

第二階段:單個collection的資料達到130w左右時,查詢效能下降明顯。

系統上線三年後,某一天,領導又告訴我xx頁面突然變慢了,當時一聽大概就知道問題所在,立即登上系統並確認了該問題及原因。原來還是某個collection資料過多導致,即使建立索引也不起作用,因為該系統公司員工使用相當頻繁,所以如果通過分割槽來解決的話比較花費比較長的時間,而領導期望是當天就解決該問題,但是現在已經是下午五點多,通過該方法時間上明顯來不及。隨後去仔細檢視了該功能的使用情況,**,並分析了資料。發現實現上的熱點資料是非常少的,大概只佔總資料的百分之一點幾,不到百分之二,如果將非熱點資料從該collection分離,該問題是否就解決了呢?隨後分析了該collection涉及的所有功能,發現通過該方法是可行的,說幹就幹,新增了乙個觸發器,在熱點資料處理完之後,通過該熱髮器將熱點資料轉為非熱點資料,原程式**不動,七點半左右**寫完,八點在測試環境ok,八點半上線,完美解決。

3.因硬碟空間不夠進行資料遷移的問題。

這個問題沒有啥好說的,mount乙個空間比較大的盤,停了應用,沒有通過mongodb自帶的備份命令備份,因為實在是太慢了,直接通過copy命令把整個dbpath複製到新盤,修改dbpath、logpath後重啟mongodb就ok了。

Spring data Jpa使用過程中遇到的坑

一定要注意如果我們在實體類中沒有配置資料表的預設值,那麼在存入和取出的時候應該設定。否則在取出的時候就會出現問題。如何通過一方獲取到多方實體 jsp中 jsp資料夾與上面servlet對映名最好不要一致,這樣會出問題 注意!乙個實體類的表id名字請設定為id,保證不出錯。問題分析 解決方法 其實一般...

Glide使用過程中遇到的坑

專案之前使用的載入庫是universal image loader,但是此庫已經好久不維護了,同時也發現了更加不錯的載入庫,也就是glide,用起來很方便並且記憶體佔用量還很令人滿意,所以決定大刀闊斧的將之前的載入庫換成glide。但是在換使用者頭像相關模組的時候發現問題了,就是載入網路時第一次載入...

mysql 使用過程中遇到的錯誤

修改hibernate.cfg.xml檔案 hibernate.connection.url jdbc mysql localhost 3306 hibernatedemo connection.useunicode true connection.characterencoding utf 8 參...