Zależy to również od rodzaju uruchamianych zapytań. Sprawdź, czy są tam wymienione poniżej punkty -
- czy jest dużo zapytań agregujących? Jaką masz strukturę kolekcji, tj.
- czy istnieje wiele zagnieżdżonych tablic?
- Czy jest to pojedyncza instancja czy zestaw replik? Spróbuj umieścić zestaw replik z odczytem i zapisem w innym węźle.
- Czy zapytania zwracają dane z wielu kolekcji?
- Sprawdź, ile % operacji ma w swojej instancji błąd strony?
- Sprawdzaj swoje dzienniki pod kątem operacji z wysokim nscanned lub scanAndOrder w okresach wysokiego poziomu blokady/kolejki i odpowiednio indeksuj.
- Sprawdź zapytania pod kątem operatorów intensywnie korzystających z procesora, takich jak $all, $push/$pop/$addToSet, a także aktualizacji dużych dokumentów, a zwłaszcza aktualizacji dokumentów z dużymi tablicami (lub dużymi tablicami dokumentów podrzędnych).
- jeśli Twoja baza danych jest intensywnie zapisywana, pamiętaj, że tylko jeden procesor na bazę danych może jednocześnie zapisywać (dzięki temu, że wątek blokuje zapis). Rozważ przeniesienie części tych danych do własnej bazy danych.
To kilka rzeczy, które z czasem zmniejszają wydajność. Omówiłem tutaj najczęstsze przypadki użycia, jednak proszę sprawdź ten post po więcej informacji.