sql >> Base de Datos >  >> NoSQL >> MongoDB

mongodb groupby lento incluso después de agregar el índice

Como puede ver en la consulta que escribió, este tipo de agregación en 2.0 requiere que ejecute Map/Reduce. Map/Reduce en MongoDB tiene algunas penalizaciones de rendimiento que se han cubierto en SO antes - básicamente, a menos que pueda paralelizar a través de un clúster, ejecutará javascript de un solo subproceso a través de Spidermonkey, no es una propuesta rápida. El índice, dado que no está siendo selectivo, realmente no ayuda; solo tiene que escanear todo el índice y potencialmente el documento.

Sin embargo, con el lanzamiento inminente de 2.2 (actualmente en rc1 al momento de escribir esto), tiene algunas opciones. El marco de agregación (que es Map/Reduce nativo, no basado en JS) introducido en 2.2 tiene un operador de grupo y fue creado específicamente para acelerar este tipo de operaciones en MongoDB.

Recomendaría darle una oportunidad a 2.2 y ver si su desempeño en la agrupación mejora. Creo que se vería así (nota:no probado):

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