2012-05-25 19 views
6

Tengo miles de registros que deben recuperarse en un solo clic de usuario. Actualmente me está dando los resultados muy lentamente, tengo que esperar mucho tiempo. ¿Hay alguna manera de mejorar la recuperación de estos resultados utilizando hibernate?¿Cómo mejorar el rendimiento de Hibernate en Java?

Tengo un caso en el que un método que tiene una consulta de selección se ejecutará cada minuto. Aquí es donde Hibernate me está dando el resultado lento. Estoy usando Hibernate con MySQL.

+2

Eso es como decir "¿Cuánto tiempo dura un trozo de cuerda?". Necesitamos más detalles sobre lo que es su HQL. Solo una simple cláusula de "dónde" podría acelerar las cosas dramáticamente. – david99world

+0

¿Estás utilizando algún almacenamiento en caché? (hibernate.cache.user_query_cache = true) – stzoannos

+0

Recuperar muchos datos de una base de datos es lento, hibernar o no. Reduzca el número de filas que está recuperando, por ejemplo, presentándolas unos cientos filas a la vez. Sus usuarios no pueden ver las 10000 filas al mismo tiempo de todos modos, por lo que no tiene sentido presentarles tanta información. – dasblinkenlight

Respuesta

6

La práctica común está permitiendo de segundo nivel de caché y caché de consultas. Entonces tus datos serán leídos desde memmory no desde db.

buen artículo sobre el tema here

Otras cosas pueden ser atento:

1 de indexación - en caso de que haya dónde y ordenación - usted tiene que construir índices para campos que está buscando/pedido - esto puede mejorar velocidad de búsqueda 10 veces

2 Denormalización - si tiene un montón de combinaciones, la desnormalización (poner todo en una sola tabla) puede ayudar. Pero esta debería ser la solución final cuando todo lo demás falla.

+0

Muchas gracias intentaré esto –

+0

Tengo un caso en el que un método que tiene una consulta de selección se ejecutará cada minuto. Aquí es donde hibernate me da un resultado lento –

+0

Con el segundo nivel de caché y el caché de consultas habilitados, se rellenarán las entidades después de la primera ejecución de la consulta. Entonces la primera vez puede tomarlo despacio. Pero las próximas veces usará valores almacenados en caché. La lectura de la memoria será más rápida – alexey28

1

yo sugeriría que ir a por Pagination si tiene que mostrar los registros en una página web y recuperar parte de los registros a la vez decir 100.

Cuestiones relacionadas