Questão FC374573
A equipe identificou que a consulta está impactando o desempenho do banco de dados quando acessada simultaneamente por múltiplos usuários. Considerando o impacto causado por acesso
Sistema de Gerenciamento de Banco de Dados (SGBD)
Instituto Consulplan · 2025
Determinado analista de sistema da Câmara Municipal está otimizando uma consulta SQL para gerar um relatório de solicitações processadas por departamento. A tabela Solicitações possui os seguintes campos:
- id_solicitacao (chave primária)
- id_departamento (chave estrangeira)
- data_solicitacao
- status ('pendente', 'em andamento', 'concluída')
A consulta a seguir foi implementada para contar o número de solicitações concluídas por departamento:
SELECT id_departamento, COUNT(*) AS total_concluidas
FROM Solicitações
WHERE status = 'concluída'
GROUP BY id_departamento;
A equipe identificou que a consulta está impactando o desempenho do banco de dados quando acessada simultaneamente por múltiplos usuários. Considerando o impacto causado por acessos concorrentes a uma consulta de leitura com agregação, qual das estratégias a seguir representa a solução mais eficaz para otimizar o desempenho e reduzir a carga sobre o banco de dados?
- Criar uma indexação no campo status para acelerar a filtragem das solicitações concluídas.
- Substituir a consulta por uma visão materializada, armazenando os resultados pré-calculados para reduzir a carga computacional da consulta.
- Utilizar o nível de isolamento SERIALIZABLE, garantindo que cada transação leia os dados sem interferência de outras, mesmo que isso reduza a concorrência.
- Implementar um bloqueio exclusivo (LOCK) na tabela Solicitações durante a execução da consulta para evitar inconsistências, impedindo leituras concorrentes.
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
Substituir a consulta por uma visão materializada significa armazenar a agregação pré‑computada (contagem por departamento) em disco, permitindo leituras muito rápidas sem recalcular o GROUP BY a cada acesso.
Isso reduz CPU e I/O no servidor durante acessos concorrentes, minimiza contenção e melhora latência para relatórios frequentes, porque os clientes consultam valores já consolidados.
É preciso definir a estratégia de refresh: agendamento periódico ou refresh on commit. Escolher frequência adequada equilibra desempenho e consistência (risco de dados desatualizados).
Quando possível, usar refresh incremental (fast refresh) e criar índices na visão para acelerar leituras e atualizações. Considere também custo de armazenamento e janela de atualização ao projetar a solução.
Conteúdo do catálogo FC Concursos · Atualizado em