FC ConcursosFC Concursos

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?

  1. Criar uma indexação no campo status para acelerar a filtragem das solicitações concluídas.
  2. Substituir a consulta por uma visão materializada, armazenando os resultados pré-calculados para reduzir a carga computacional da consulta.
  3. 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.
  4. 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

Continue aprendendo