sql >> Base de Datos >  >> RDS >> Mysql

Rendimiento de Hibernate, JDBC y Java en conjuntos de resultados medianos y grandes

¿Puedes hacer una prueba de humo con la consulta más simple posible como:

SELECT current_timestamp()

o

SELECT 1 + 1

Esto le dirá cuál es la sobrecarga real del controlador JDBC. Tampoco está claro si ambas pruebas se realizan desde la misma máquina.

Ejecute la misma consulta miles de veces en Java. JVM necesita algo de tiempo para calentarse (carga de clases, JIT). También asumo SimpleJDBC.getConnection() utiliza la agrupación de conexiones C3P0:el costo de establecer una conexión es bastante alto, por lo que las primeras ejecuciones pueden ser lentas.

También prefiera consultas con nombre a consultas ad-hoc o consultas de criterios.

Hibernate es un marco muy complejo. Como puede ver, consume el 75 % del tiempo total de ejecución en comparación con JDBC sin procesar. Si necesita ORM sin procesar (sin carga diferida, verificación sucia, almacenamiento en caché avanzado), considere mybatis . O tal vez incluso JdbcTemplate con RowMapper abstracción.

Realmente no. Consulte el Capítulo 19. Mejora del rendimiento en la documentación de Hibernate. Hay mucho de reflexión sucediendo ahí fuera + generación de clase. Una vez más, es posible que Hibernate no sea la mejor solución cuando desee exprimir cada milisegundo de su base de datos.

Sin embargo es una buena opción cuando desea aumentar la experiencia general del usuario debido a la amplia compatibilidad con el almacenamiento en caché. Consulte el rendimiento doctor de nuevo. Se habla principalmente de almacenamiento en caché. Hay un caché de primer nivel, un caché de segundo nivel, un caché de consultas... Este es el lugar donde Hibernate podría realmente superar a JDBC simple:puede almacenar mucho en caché de una manera que ni siquiera podría imaginar. Por otro lado, una configuración de caché deficiente conduciría a una configuración aún más lenta.

Consulte:Almacenamiento en caché con Hibernate + Spring:¡algunas preguntas!

JVM (especialmente en servidor configuración) es bastante rápido. La creación de objetos en el montón es tan rápida como en la pila, p. C, la recolección de basura se ha optimizado en gran medida. No creo que la versión de Java que ejecuta JDBC simple sea mucho más lenta en comparación con una conexión más nativa. Es por eso que sugerí algunas mejoras en su punto de referencia.

Creo que JDBC es una buena opción si el rendimiento es su mayor problema. Java se ha utilizado con éxito en muchas aplicaciones de bases de datos.