Perdiendo algunos problemas de rendimiento de DB en una aplicación EclipseLink/JPA bastante típica.¿En qué condiciones SELECCIONAR con PRIMARY KEY ser lento?
Estoy viendo consultas frecuentes que están tomando 25-100ms. Estas son consultas simples, simplemente seleccionando todas las columnas de una tabla donde su clave principal es igual a un valor. No deberían ser lentos
Estoy mirando el tiempo de consulta en el registro de postgres, usando log_min_duration_statement, por lo que esto debería eliminar cualquier sobrecarga de red o aplicación.
Esta consulta no es lenta, pero se usa con mucha frecuencia.
¿Por qué seleccionar * por clave principal sería lento? ¿Esto es específico para postgres o es un problema DB genérico? ¿Cómo puedo acelerar esto? ¿En general? Para postgres?
Consulta de ejemplo del registro de PG:
2010-07-28 08:19:08 PDT - LOG: duration: 61.405 ms statement: EXECUTE <unnamed> [PREPARE: SELECT coded_ele
ment_key, code_system, code_system_label, description, label, code, concept_key, alternate_code_key FROM coded
_element WHERE (coded_element_key = $1)]
tabla tiene alrededor de 3,5 millones de filas.
También he ejecutado EXPLAIN y EXPLAIN ANALYZE en esta consulta, solo está haciendo un escaneo de índice.
¿Qué tan grande es el conjunto de datos? ¿Qué tan grande es cada fila? ¿Cómo se ve la consulta? –
¿Ha agrupado su base de datos? ¿Hiciste un análisis completo de vacío antes de publicar? ¿Y qué versión Pg? – jmz
Sin clustering, tampoco es realmente una opción. Todavía no hice un análisis completo de vacío (lo haré) y este es PG 8.1. – Freiheit