Estoy usando PostgreSQL 8.3 + PostGIS 1.3 para almacenar datos geoespaciales en Ubuntu 8.04 Hardy .
Esta versión particular de PostGIS tiene un error al calcular un buffer()
segmento muy complejo, lo que hace que la consulta tome más y más memoria hasta que toda la máquina se atasque.
Estoy buscando un mecanismo PostgreSQL que pueda:
- Limite el consumo de memoria (y quizás otros recursos) utilizados por una consulta específica.
- Detiene automáticamente las consultas cuyo tiempo de ejecución supera un cierto umbral.
¿Algunas ideas?
performance
postgresql
Adam Matan
fuente
fuente
Respuestas:
Para limitar el consumo de memoria, el parámetro de configuración principal es
work_mem
. Dado que esto se aplica por operación, no por consulta, no puede simplemente establecerlo en N si desea gastar N cantidad de memoria, sino que debe ajustarlo y ajustarlo un poco para obtener el resultado deseado.Sin embargo, esto no ayuda en caso de errores y otras pérdidas de memoria en el código del servidor o en las extensiones. Puede controlar eso con los límites de recursos específicos del proceso controlados por
ulimit
. Pero si alcanza el límite y la asignación de memoria falla, ¿qué desea que suceda? Probablemente no se comportará muy bien. Mejor arregle esos errores o use una versión diferente.Las consultas de detención cuyo tiempo de ejecución superó un umbral, use el parámetro `Statement_timeout ', por ejemplo,
fuente
Echa un vistazo a la Wiki de Postgres :
Puede ajustar la configuración de rendimiento por usuario o por base de datos, pero no cuándo abortar ciertas consultas.
fuente