Estoy almacenando metadatos de libros como nombre, autores, precio, editor, etc. en un documento de mongodb. Tengo alrededor de 10 millones de estos documentos y todos están en una sola colección. El tamaño promedio del documento es 1.9 KB. Ahora tengo índices en name
, authors
y price
. De hecho, tengo 2 índices en el precio uno en orden ascendente y uno en orden descendente. Mi versión mongodb es 2.2.0 y estoy usando el controlador php para consultar a mongo. La versión del controlador es 1.12. Pero cuando hago una consulta de rango en el precio obtengo un MongoCursorTimeoutException
. En mi consulta estoy tratando de encontrar libros en un rango de precio determinado como "precio inferior a 1000 y más de 500".preguntando por 10 millones de documentos mongodb
Aumentar el tiempo de espera no parece ser una buena idea (ya son 30 segundos). ¿Hay algo más que pueda hacer para acelerar el proceso de consulta?
EDIT En realidad, mi índice de precios es compuesto. Tengo un campo de estado que tiene un valor entero, por lo que mi índice de precios se parece a {price:-1,status:1}
y {price:1,status:1}
También estoy tratando de recuperar 20 documentos a la vez con PHP.
memcached? eso es 18 conciertos, no es de extrañar. ¿Cuánta memoria tienes instalada? – nullpotent
@iccthedral tengo 8 GB ram. Pero mi tamaño de índice total es de aproximadamente 6 GB. Así que tengo suficiente memoria para mantener mis índices en RAM – lovesh
Tener índices ascendentes y descendentes de precio es un desperdicio. Dirección [no importa] (http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeys) para índices de campo único. Elimine uno de ellos para liberar algo de RAM de índice. – JohnnyHK