MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb groupby powolny nawet po dodaniu indeksu

Jak widać z zapytania, które napisałeś, ten typ agregacji w wersji 2.0 wymaga uruchomienia Map/Reduce. Mapa/Zmniejsz w MongoDB ma pewne kary za wydajność, które zostały uwzględnione w SO przed - w zasadzie, jeśli nie jesteś w stanie zrównoleglać się w klastrze, będziesz uruchamiał jednowątkowy javascript za pośrednictwem Spidermonkey - nie jest to szybka propozycja. Indeks, ponieważ nie jesteś selektywny, tak naprawdę nie pomaga - wystarczy zeskanować cały indeks, a także potencjalnie dokument.

Z rychłym wydaniem 2.2 (obecnie w rc1 w momencie pisania tego) masz jednak kilka opcji. struktura agregacji (który jest natywny, nie oparty na JS Map/Reduce) wprowadzony w 2.2 ma wbudowany operator grupy i został stworzony specjalnie w celu przyspieszenia tego rodzaju operacji w MongoDB.

Polecam dać 2,2 strzału i zobaczyć, czy poprawi się twoja wydajność w grupowaniu. Myślę, że wyglądałoby to mniej więcej tak (uwaga:nie testowano):

db.alarm.aggregate(
    { $group : {
        _id : "$serverName",
        count : { $sum : 1 }
    }}
);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. policz całkowitą liczbę elementów wewnątrz tablicy w dokumencie - MongoDB

  2. Myśli MongoDB i PostgreSQL

  3. Jak wyeksportować wszystkie kolekcje w MongoDB?

  4. PHP intl.so nie działa

  5. Grupowanie dokumentów w MongoDB na specjalnych warunkach