Pular para o conteúdo principal

Questão de Banco de Dados — Otimização (Tuning) em Banco de Dados — CESPE / CEBRASPE 2024

Banco de DadosOtimização (Tuning) em Banco de Dados
Código
ce403657
Banca
CESPE / CEBRASPE
Órgão
SEBRAE
Ano
2024
Cargo
Ana Tec II ( )
A prática mais eficaz para a melhora de desempenho das consultas em tabelas grandes em um banco de dados relacional é
  1. Aa manutenção da maior quantidade possível de dados em uma única tabela para reduzir a necessidade de junções (JOIN).
  2. Ba utilização de chaves primárias compostas em todas as tabelas para garantir a unicidade dos registros.
  3. Ca criação de índices em colunas frequentemente usadas em cláusulas WHERE ou em junções (JOIN) nas consultas.
  4. Do aumento do tamanho das transações para incluir o máximo de operações possível.
Revelar gabarito e comentário

GabaritoC — a criação de índices em colunas frequentemente usadas em cláusulas WHERE ou em junções (JOIN) nas consultas.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Otimização de Consultas em Banco de Dados Relacional

Gabarito: letra C. A prática mais eficaz para melhorar o desempenho de consultas em tabelas grandes é a criação de índices em colunas frequentemente usadas em cláusulas WHERE ou em junções (JOIN), pois os índices são estruturas auxiliares que agilizam a recuperação de registros, evitando varreduras completas na tabela. As demais alternativas apresentam práticas que não são eficazes ou até prejudiciais ao desempenho.

A otimização de consultas, também chamada de tuning, é o processo pelo qual o SGBD escolhe uma estratégia de execução (plano de consulta) para recuperar os resultados de forma eficiente. O objetivo é minimizar o tempo de resposta e obter ganho de desempenho. Para isso, o SGBD avalia sistematicamente estratégias alternativas, utilizando regras heurísticas e estimativas de custo. Os índices são um dos principais recursos físicos que o otimizador pode utilizar para acelerar o acesso aos dados.

Um índice é uma estrutura de dados auxiliar associada a uma tabela, que organiza os valores de uma ou mais colunas (chamadas de chave do índice) de forma a permitir buscas rápidas. Quando uma consulta filtra registros por uma coluna indexada (ex.: WHERE coluna = valor) ou realiza junções entre tabelas usando colunas indexadas, o SGBD pode usar o índice para localizar diretamente as linhas relevantes, em vez de percorrer toda a tabela (full table scan). Isso reduz drasticamente o número de operações de I/O e o tempo de execução, especialmente em tabelas grandes.

A criação de índices, porém, não é gratuita: cada índice ocupa espaço em disco e precisa ser atualizado a cada operação de INSERT, UPDATE ou DELETE, o que pode degradar o desempenho de escritas. Por isso, a prática recomendada é criar índices seletivamente, apenas nas colunas que são realmente usadas com frequência em filtros e junções, e evitar índices em colunas com baixa seletividade (poucos valores distintos) ou em tabelas com muitas operações de escrita.

As demais alternativas apresentam práticas que não são eficazes ou até prejudiciais ao desempenho:

  • A) Manter a maior quantidade possível de dados em uma única tabela para reduzir junções é uma prática que vai contra os princípios de modelagem relacional e normalização. Isso aumenta a redundância, causa anomalias de inserção, exclusão e atualização, e pode até piorar o desempenho, pois tabelas maiores exigem mais I/O para varreduras.

  • B) Utilizar chaves primárias compostas em todas as tabelas não é uma prática recomendada para desempenho. Chaves compostas podem ser úteis em alguns casos, mas não garantem melhoria de desempenho e podem até prejudicar, pois índices maiores ocupam mais espaço e são mais lentos para atualizar.

  • D) Aumentar o tamanho das transações para incluir o máximo de operações possível é uma prática que pode piorar o desempenho e a concorrência. Transações longas aumentam a probabilidade de conflitos de bloqueio, reduzem a concorrência e podem causar problemas de recuperação em caso de falhas.

Portanto, a alternativa C é a única que apresenta uma prática comprovadamente eficaz para melhorar o desempenho de consultas em tabelas grandes.

Critério

A) Tabela única

B) Chave primária composta

C) Índices em colunas de WHERE/JOIN

D) Transações longas

Efeito no desempenho de consultas

Piora (mais I/O, redundância)

Neutro ou prejudicial (índices maiores)

Melhora significativamente (evita full table scan)

Piora (conflitos de bloqueio, menor concorrência)

Impacto em operações de escrita

Aumenta anomalias e custo de manutenção

Aumenta custo de atualização dos índices

Custo adicional de manutenção do índice

Aumenta risco de deadlocks e falhas

Alinhamento com boas práticas

Contraria normalização

Não é critério de otimização

Prática recomendada de tuning

Contraria recomendação de transações curtas

Alternativa A — ❌ Incorreta

Manter a maior quantidade possível de dados em uma única tabela para reduzir junções é uma prática que contraria os princípios de modelagem relacional e normalização. Isso aumenta a redundância, causa anomalias de inserção, exclusão e atualização, e pode até piorar o desempenho, pois tabelas maiores exigem mais I/O para varreduras. A normalização, ao contrário, busca minimizar redundância e anomalias, dividindo dados em tabelas menores e relacionadas.

Alternativa B — ❌ Incorreta

Utilizar chaves primárias compostas em todas as tabelas não é uma prática recomendada para desempenho. Chaves compostas podem ser úteis em alguns casos, mas não garantem melhoria de desempenho e podem até prejudicar, pois índices maiores ocupam mais espaço e são mais lentos para atualizar. A chave primária serve para garantir a unicidade dos registros, não para otimizar consultas.

Alternativa C — ✅ Correta ⟵ GABARITO

A criação de índices em colunas frequentemente usadas em cláusulas WHERE ou em junções (JOIN) é a prática mais eficaz para melhorar o desempenho de consultas em tabelas grandes. Os índices são estruturas auxiliares que agilizam a recuperação de registros, permitindo que o SGBD localize diretamente as linhas relevantes sem varrer a tabela inteira. Isso reduz o I/O e o tempo de resposta, especialmente em tabelas grandes.

Alternativa D — ❌ Incorreta

Aumentar o tamanho das transações para incluir o máximo de operações possível é uma prática que pode piorar o desempenho e a concorrência. Transações longas aumentam a probabilidade de conflitos de bloqueio, reduzem a concorrência e podem causar problemas de recuperação em caso de falhas. O ideal é manter transações curtas e eficientes.

Gabarito: letra C

Link permanente: /questoes/ce403657