2012-03-07 31 views
14

¿Cómo puedo guardar/cargar la base de datos en h2 incorporada en algún archivo o directorio en modo binario para una carga más rápida?Guardado de la base de datos H2 en memoria en el disco

Quiero usar esto para almacenar en caché los datos, así no tengo que ejecutar todas las líneas de creación de tabla/insertar cláusulas cada vez.

+1

¿Puedes usar el archivo DB frente a la versión en memoria? Supongo que estás haciendo un desarrollo personalizado usando un marco (por ejemplo, Grails) que no has mencionado. – Marc

+0

Este es un proyecto personalizado sin marcos involucrados. Para ser sincero, no estoy seguro de cuáles son las implicaciones de rendimiento del archivo db, quiero velocidad y los datos siempre se adaptarán a la memoria, así que asumí que el db en memoria será el más rápido. Los datos serán solo de consulta, por lo que no quiero ninguna verificación de guardado innecesaria. – mikkom

+0

@marc Usar 'el archivo DB' es algo diferente. Sería muy útil en la prueba unitaria si se pudiera configurar un conjunto de datos de prueba en memoria, con java o cualquier otro idioma, luego hacer una copia de seguridad del conjunto de datos y usarlo para restaurar al estado inicial después de cada prueba. –

Respuesta

8

En lugar de utilizar una base de datos en memoria, puede usar una base de datos normal (persistente). Aún puede usar tablas en memoria incluso entonces (crear tabla de memoria).

La forma más fácil de mantener una base de datos completamente en memoria en el disco es usar la instrucción SQL SCRIPT TO 'fileName'. Esto creará una secuencia de comandos SQL. Los datos se almacenan en forma de texto, lo que no suena como la solución más eficiente. Sin embargo, generalmente el cuello de botella es el disco de todos modos y no formatea/analiza el texto.

Otra opción es crear otra base de datos, vincular las tablas con la base de datos en memoria (usando create linked table o la función link_schema), y luego usar create table as select para conservar las tablas.

+0

Insertar las cláusulas es lo que hago actualmente y para 1 gigas de texto lleva algo de tiempo y no es io. lo siento pero quiero la opción binaria. – mikkom

+0

Actualizado mi respuesta. Para SCRIPT: si no es IO, ¿qué es entonces? ¿Utilizaste una herramienta de creación de perfiles, como el generador de perfiles integrado? –

Cuestiones relacionadas