Estoy trabajando en una aplicación Java utilizando la base de datos H2 en modo incrustado. Mi aplicación consume 150 MB de memoria del montón.Problemas de rendimiento utilizando H2 DB en modo incrustado con gran carga de datos en la base de datos
Problema: Pasos Cuando cargo la base de datos H2 con 2 mb de datos, el acceso a la base de datos es rápido y el tamaño de la memoria del montón 160mb.
Pero cuando cargo la base de datos H2 con 30 mb de datos (h2 tamaño del archivo db = 30 mb). Luego acceder a la base de datos desde mi aplicación es muy lento. La razón es que el tamaño de mi montón de aplicaciones ha crecido enormemente hasta los 300 MB de tamaño, por lo tanto, el rendimiento se ha degradado. Confirmé el uso de JConsole.
Entiendo que la base de datos H2 está desarrollada usando Java y como estoy utilizando la base de datos H2 en modo incrustado, el tamaño de pila de la base de datos H2 se agrega a mi aplicación que está rompiendo la aplicación.
El problema es que a medida que crece el tamaño de la base de datos H2, el rendimiento de mi aplicación se degrada.
¿Cómo resolver el problema?
he dado la conexión como
rurl = "jdbc:h2:file:/" + getDBPath() + dbname + ";CACHE_SIZE=" + (1024 * 1024) + ";PAGE_SIZE=512";
para aumentar el caché de H2.
El tamaño de caché de una base de datos H2 persistente e incorporada es de 16 MB de forma predeterminada. ¿Utiliza una base de datos en memoria o una configuración de caché más alta? ¿Estás seguro de que el rendimiento se degrada debido al uso de la memoria de montón (porque esto es muy poco común) y verifica dónde está el problema de rendimiento (por ejemplo, jps -l/jstack -l)? –
Ha utilizado el tamaño de la memoria caché y el tamaño de página no predeterminados. ¿Cuál es el motivo para no usar la configuración predeterminada? –
¿Encontró una solución para esto? Estoy experimentando el mismo problema. La base de datos pequeña está bien, si inserto muchos datos en una tabla todas las consultas comienzan a tomar mucho más tiempo. – Gust