MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb groupby lento anche dopo aver aggiunto l'indice

Come puoi vedere dalla query che hai scritto, questo tipo di aggregazione in 2.0 richiede l'esecuzione di Map/Reduce. Map/Reduce su MongoDB ha alcune penalità prestazionali che sono state coperte su SO prima - in pratica, a meno che tu non sia in grado di parallelizzare su un cluster, eseguirai javascript a thread singolo tramite Spidermonkey - non una proposta rapida. L'indice, dal momento che non sei selettivo, non aiuta davvero:devi solo scansionare l'intero indice e potenzialmente il documento.

Con l'imminente rilascio della 2.2 (attualmente in rc1 al momento della stesura di questo) hai comunque alcune opzioni. Il framework di aggregazione (che è nativo, non basato su JS Map/Reduce) introdotto in 2.2 ha un integrato operatore di gruppo ed è stato creato appositamente per velocizzare questo tipo di operazioni in MongoDB.

Consiglierei di dare una possibilità a 2.2 e vedere se le tue prestazioni sul raggruppamento migliorano. Penso che assomiglierebbe a questo (nota:non testato):

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