Considere a seguinte situação hipotética: O sistema acadêmi...

Próximas questões
Com base no mesmo assunto
Q4071619 Banco de Dados
Considere a seguinte situação hipotética:
O sistema acadêmico de uma Universidade utiliza MySQL 8 como banco de dados principal. Durante o período de matrícula, o sistema começou a apresentar lentidão severa e, em alguns momentos, indisponibilidade. Em períodos anteriores de matrícula, foi necessário realizar reinicializações manuais diárias no servidor de banco de dados devido a instabilidades e degradação de desempenho.

Durante a análise, a equipe de Tecnologia da Informação identificou que:
a aplicação executa múltiplas consultas sequenciais ao banco dentro da mesma requisição HTTP (padrão N+1).
algumas transações permanecem abertas por vários segundos.
o número de conexões ativas atinge frequentemente o limite configurado (max_connections).
há aumento significativo de locks em tabelas de pedidos e estoque.

Assinale a alternativa que apresenta a abordagem CORRETA para prevenir o problema de travamento e alta contenção no MySQL, bem como otimizar o desempenho do servidor nesse cenário: 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C

Fundamento decisivo: A decisão dependia de identificar a causa predominante do problema: não era falta de capacidade bruta do MySQL, mas o desenho da aplicação e o ciclo das transações/conexões, evidenciado por N+1, transações longas, locks e estouro de max_connections. Por isso, a alternativa correta é a que corrige esses fatores na aplicação.

Tema central: Administração de MySQL diante de contenção e N+1
Análise das alternativas
A
Errada
Está errada porque aumentar significativamente max_connections ataca apenas o sintoma de saturação de conexões. Isso não corrige o padrão N+1, não encurta transações abertas por vários segundos e não reduz a contenção por locks; sem tratar esses pontos, o aumento do limite pode só ampliar consumo de recursos e manter o problema de concorrência.
B
Errada
Está errada porque reiniciar automaticamente o banco quando as conexões chegarem a 90% do limite é medida paliativa e disruptiva. Não previne a causa estrutural da lentidão e da contenção, apenas mascara o problema e ainda acrescenta indisponibilidade, o que contraria a ideia de otimização adequada.
C
Certa
A alternativa C está correta porque enfrenta diretamente os fatores técnicos que produzem a lentidão, a contenção e a instabilidade descritas. Reduzir o padrão N+1 e consolidar consultas diminui a quantidade de operações por requisição, o que reduz carga, latência e pressão sobre as conexões. Encurtar o tempo das transações reduz a retenção de locks, ponto crítico quando há tabelas concorridas. Implementar pool de conexões adequado controla melhor a concorrência e evita explosão de conexões ativas. É a única opção coerente com o critério de corrigir a causa do problema, e não apenas o sintoma.
D
Errada
Está errada porque trocar InnoDB por MyISAM não resolve o desenho ruim de consultas nem o problema de transações longas. Além disso, segundo a base, MyISAM elimina recursos transacionais essenciais e não é a escolha correta para sistema crítico com operações concorrentes.
Pegadinha da questão
A confusão explorada foi tomar o limite de conexões e os reinícios recorrentes como causa principal, quando o cenário aponta que eles são sintomas de N+1, transações longas e má gestão de conexões.
Dica para questões semelhantes
  • Quando houver N+1, transações longas, muitos locks e estouro de conexões ao mesmo tempo, priorize correção no código e no ciclo de vida de transações/conexões.
  • Atingir max_connections é sinal operacional; não trate isso como solução isolada sem reduzir o custo por requisição.
  • Para reduzir contenção em tabelas concorridas, encurte transações antes de considerar medidas artificiais de capacidade.
  • Não substitua engine transacional para 'reduzir locks' sem resolver o padrão de acesso e o tempo de retenção das transações.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo