Estou usando o PostgreSQL 8.3 + PostGIS 1.3 para armazenar dados geoespaciais no Ubuntu 8.04 Hardy .
Esta versão específica do PostGIS tem um erro ao calcular buffer()
segmentos muito complexos, o que faz com que a consulta consiga mais e mais memória até que toda a máquina fique presa.
Estou procurando um mecanismo PostgreSQL que possa:
- Limite o consumo de memória (e talvez outros recursos) usado por uma consulta específica.
- Interrompa automaticamente consultas cujo tempo de execução exceda um determinado limite.
Alguma ideia?
performance
postgresql
Adam Matan
fonte
fonte
Respostas:
Para limitar o consumo de memória, o principal parâmetro de configuração é
work_mem
. Como isso se aplica por operação, não por consulta, você não pode simplesmente defini-lo como N se quiser gastar uma quantidade de memória N, mas precisa ajustar e ajustá-lo um pouco para obter o resultado desejado.Isso não ajuda, no entanto, no caso de erros e outras falhas de memória no código ou nas extensões do servidor. Você pode controlar isso com os limites de recursos específicos do processo controlados por
ulimit
. Mas se você atingir o limite e a alocação de memória falhar, o que você deseja que aconteça? Provavelmente não se comportará muito bem. Melhor corrigir esses bugs ou usar uma versão diferente.As consultas de interrupção cujo tempo de execução ultrapassou um limite, usam o parâmetro `statement_timeout ', por exemplo,
fonte
Dê uma olhada no Wiki do Postgres :
Você pode ajustar as configurações de desempenho por usuário ou por banco de dados, mas não quando interromper determinadas consultas.
fonte