MongoDB 如何應對大資料量查詢做優化,並做結果過濾處理?

時間 2021-06-03 08:22:29

1樓:johnson

還是得具體問題具體分析,有很多因素要考慮:

1.資料集大小

決定了需要處理多少資料,理想狀態是能全部載入到記憶體中處理

2.結果集大小

決定了要返回多少資料。比如聚合排序時記憶體使用超過100m就要開啟allowDiskUse開關,並且效能下降很大。

3.查詢邏輯的複雜度

決定了是可以用簡單查詢,還是aggregate管道,或者MapReduce來處理;乃至於使用程式來計算

也可以考慮索引到es再處理,不過這個成本就有點高了

總之,越複雜越吃記憶體和cpu

4.伺服器記憶體大小

記憶體不夠大,不足以快取資料,就要頻繁淘汰頁引發大量磁碟io,效能肯定差

5.cpu核數

影響計算能力

6.磁碟io

機械盤陣列肯定比不上ssd陣列,差個數量級

7.集群和分片

可有效分散io和記憶體壓力,當然結果集太大了也不行,router節點扛不住

8.索引優化

合理的索引能極大減少io,提高查詢效率

排序欄位沒索引,記憶體使用超過32m就會引發異常

9.查詢頻率

乙個月統計一次和頻繁的實時統計,可能要用不同的方法來做

10.期望的響應速度

要在規定的時間下響應和時間不敏感的統計,也需要不同的處理策略

列出你的需求,充分考慮各種因素,才能決定採用什麼樣的方式來查詢

2樓:奔波兒灞

我目前也遇到乙個類似的問題,需要對大量資料遍歷過濾。採用游標的方式連遍歷一遍都做不到(不做任何操作),大概到幾萬條就退出了。然後採用了一種辦法,就是排序後取10條資料,然後下次遍歷排序條件為大於上次遍歷的最後那個資料,再取10條。

感覺好像沒問題,可是在遍歷時也是到幾萬條就退出了(也是什麼操作都沒做)。然後加一點判斷條件,客戶端直接閃退。。樓主現在解決這個問題了嗎?

php百萬級大資料量匯出資料到excel,如何成功並高效匯出?

為何人類還是放棄不了excel來辦公?是不是側面說麵了目前市面上的大部分系統平台都還需要努力?大資料分析時代,程式設計師所做的系統為什麼會導致使用者寧願大費周折從系統中匯出excel,也不願意直接在系統中對資料進行操作分析?這是開發者和產品們很需要去思考的空間我認為乙個合格的系統平台應該能讓人們使用...

超大資料量,如何加快寫檔案的速度?

牙雅 源資料是什麼格式?可否用load方式匯入資料庫,編寫程式分批次並行運算元據庫,生成符合要求的檔案。大型機處理億級別的資料,應該1個小時足夠了。 不是十分清楚題主遇到的是什麼樣的問題,是已經有了硬碟裡的資料要讀進來處理一下再寫回硬碟嗎?如果是這樣的話原始資料是什麼格式的呢?寫回去的時候有什麼格式...

C 大資料量如何高效率讀取解析資料庫大字段?

蘇佳 幾十萬條不等於資料量很大。讀取10w資料表結構不是很複雜的情況下,網路好的情況下。幾秒就好了。然後用bulkinsert大概幾秒 一筆拆成多筆也差不多幾十秒也完成了 Table Valued Parameters Table Valued Parameters Database Engine ...