

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
O IFCE mantém um banco de dados PostgreSQL que suporta o sistema de gestão acadêmica. Durante um período de alta demanda (semana de matrícula), o analista de TI responsável pelo banco de dados recebeu reclamações de lentidão no sistema. Ao investigar com as views de diagnóstico do PostgreSQL, observou as seguintes situações: múltiplas sessões no estado 'idle in transaction' com duração superior a 30 minutos; uma consulta de relatório complexo com varredura sequencial (Seq Scan) em tabela de grande volume estava bloqueando transações que aguardavam locks por mais de 10 minutos; e o parâmetro idle_in_transaction_session_timeout estava com valor 0 (desabilitado). Qual conjunto de ações é mais adequado para diagnosticar, resolver o problema imediato e prevenir recorrência?
Reiniciar o serviço PostgreSQL para encerrar forçadamente todas as conexões ativas e liberar os locks acumulados, registrar a ocorrência no log de operações e comunicar a indisponibilidade programada aos usuários do sistema, pois o reinício é o meio mais rápido e confiável de recuperar o banco em situações de bloqueio generalizado.
Usar pg_stat_activity e pg_locks para identificar as transações bloqueantes, encerrar sessões ociosas com pg_terminate_backend(), otimizar a consulta problemática com EXPLAIN ANALYZE criando índices ou reescrevendo a query, e configurar idle_in_transaction_session_timeout para encerrar automaticamente transações ociosas.
Criar um banco de dados vazio, exportar os dados com pg_dump, importar com pg_restore e redirecionar a aplicação para o novo banco, pois a degradação durante alta demanda com Seq Scans e locks prolongados indica que o banco de dados atual acumulou fragmentação e precisa ser reconstruído.
Aumentar max_connections no postgresql.conf, reiniciar o serviço para aplicar a configuração e monitorar via pg_stat_activity se o número de sessões idle in transaction se reduz, pois mais conexões disponíveis permitem que as transações em fila obtenham recursos e concluam normalmente.
Configurar o parâmetro lock_timeout para um valor reduzido (ex.: 5000ms) no postgresql.conf e reiniciar o serviço, pois isso fará com que transações que aguardem um lock por mais de 5 segundos sejam encerradas automaticamente, liberando os recursos bloqueados para as demais sessões.


Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.