2012-04-03 11 views
10

Estoy intentando cargar todo mi Neo4j DB en la RAM para que las consultas funcionen más rápido. Al pasar el mapa de propiedades a la creación del gráfico, no veo que el proceso ocupe más espacio en la memoria que antes, y tampoco es proporcional al espacio de los archivos en el disco. ¿Cuál podría ser el problema? y cómo se puede arreglar ... GraciasCargando todo Neo4J db a RAM

+0

También debe asegurarse de tener suficiente memoria para la asignación de memoria de los archivos, es posible que desee configurarlo manualmente (http://docs.neo4j.org/chunked/milestone/configuration-io-examples. html) –

Respuesta

5

Neo4j carga todos los datos perezosamente, lo que significa que los carga en la memoria en el primer acceso. La opción de almacenamiento en caché es solo acerca de la estrategia GC, por lo tanto, cuando (o si) las referencias serán GCed. Para cargar todo el gráfico en la memoria, su tipo de caché debe ser fuerte y debe atravesar todo el gráfico una vez. Puede hacerlo de esta manera:

// untested java code 

import org.neo4j.helpers.collection.IteratorUtil; 

// ... 

for(Node node : graph.getAllNodes()) { 
    IteratorUtil.count(node.getRelationships()); 
} 

De esta manera se utilizarán todos los nodos y las relaciones de una vez y por lo tanto cargado en la memoria caché.

+1

Gracias, encontré esto también en los documentos. Realmente desearía que hubiera una simple bandera para encender todo esto. – user971956

+1

la ventaja aquí es que puedes ajustarlo a tu caso de uso y después de todo solo son 2 líneas de código :) –

+1

Michael, cierto, pero desde una perspectiva de usabilidad para novatos (que es el sector mayoritario de un producto nuevo)) tener esas cosas como simples muertas es más importante que la opción de ajustar con precisión. – user971956