Questões de Concurso sobre Técnicas para otimização de consultas SQL

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
37 questões encontradas
Questões por página
20
Mais recentes
 

Uma equipe de gerência de dados está trabalhando nas etapas de tuning de um banco de dados. Nessa tarefa, pretende-se a otimização de instruções SQL, visando a melhorar o desempenho da sua infraestrutura de dados. Essa é a atividade de:


A

SQL Tuning


B

Power Tuning.


C

Distance Tuning


D

Performance Planning

Na otimização de consultas, o otimizador baseado em custo utiliza estatísticas de Histogramas para estimar a seletividade de predicados em colunas com distribuição de dados não uniforme. Considerando o impacto da SARGability (Search Arguments Ability − Capacidade de Argumentos de Busca) na performance, assinale a alternativa correta.


A

Otimizadores baseados em Regras (Rule-Based Optimizer) são superiores aos baseados em Custo (Cost-Based Optimizer) porque ignoram o número de linhas da tabela, focando apenas na ordem alfabética das colunas nas Chaves Primárias.


B

Uma consulta é considerada SARGable (Capaz de ser um Argumento de Busca) quando o otimizador consegue utilizar índices para filtrar os dados, evitando o uso de funções ou transformações sobre a coluna no lado esquerdo do predicado.


C

O uso do operador LIKE (Como) com o caractere curinga no início do termo de busca (ex: '%termo') é uma prática recomendada para garantir a utilização de Índices B-Tree (Árvores B) em tabelas com milhões de registros.


D

A Intersecção de Índices (Index Intersection) ocorre exclusivamente quando o SGBD (Sistema Gerenciador de Banco de Dados) identifica que dois usuários tentam atualizar a mesma linha simultaneamente, causando uma falha de Segmentação.

Um sistema de emissão de relatórios está lento. Após analisar o plano de execução, o DBA identifica que o SGBD está realizando um Table Scan em uma tabela de milhões de registros, mesmo com um filtro no campo DATA_OCORRENCIA.


O princípio fundamental de tunning a ser aplicado e o impacto esperado na performance da consulta é


A

aumentar a quantidade de memória RAM alocada para o buffer pool, o que melhorará o cache hit ratio, mas não o plano de execução da consulta.


B

criar um índice Non-Clustered na coluna DATA_OCORRENCIA, o que permitirá ao otimizador utilizar a busca por índice em vez da varredura completa.


C

alterar o tipo de dado da coluna DATA_OCORRENCIA para VARCHAR, o que facilita as operações de string.


D

forçar o uso de um Merge Join em vez de um Nested Loop Join, pois o Merge Join é sempre mais rápido.


E

desativar todas as Stored Procedures relacionadas ao relatório, pois elas introduzem latência no processamento.

Considere o script SQL a seguir.


Imagem associada para resolução da questão


Para listar o número do processo e a última data de movimentação, exibindo somente os processos que possuem movimentação, deve-se utilizar a query:


A

Imagem associada para resolução da questão


B

Imagem associada para resolução da questão


C

Imagem associada para resolução da questão


D

Imagem associada para resolução da questão


E

Imagem associada para resolução da questão

A otimização de consultas é um processo crucial para o desempenho de bancos de dados. O otimizador de consultas utiliza estatísticas sobre os dados para gerar um plano de execução eficiente.


Qual das seguintes ações pode ajudar o otimizador a gerar melhores planos de execução?


A

A utilização de SELECT * em todas as consultas para simplificar o código.


B

A remoção de todas as chaves primárias e estrangeiras para reduzir a sobrecarga.


C

A desnormalização completa do banco de dados para evitar operações de JOIN.


D

A execução de consultas complexas durante o horário de pico de utilização do sistema.


E

A criação e manutenção de índices adequados nas colunas utilizadas em cláusulas WHERE e JOIN.

Um analista de infraestrutura é responsável por gerenciar um banco de dados Oracle que armazena informações críticas de processos judiciais. Para garantir o desempenho ideal e a alta disponibilidade, o DBA (Database Administrator) deve realizar o monitoramento e a otimização proativa do ambiente. Recentemente, o analista notou um aumento na latência de consultas e na carga do sistema.


Considerando as ferramentas e as práticas de administração de SGBD Oracle, a abordagem mais adequada e tecnicamente correta para investigar a causa da degradação de desempenho e otimizar o banco de dados é:


A

Utilizar as visões dinâmicas de desempenho (V$ views) para coletar estatísticas do sistema em tempo real, como V$SESSION WAIT e V$SQLAREA, analisar os planos de execução de consultas com o EXPLAIN PLAN ou o AUTOTRACE, e verificar a ocorrência de bloqueios em sessões com o DBA LOCKS.


B

Focar a análise nas tabelas e no espaço em disco livre (tablespaces), pois a degradação de desempenho é causada, na maioria dos casos, pela falta de espaço. A otimização seria feita simplesmente adicionando mais arquivos de dados (datafiles) para garantir que não ocorram erros de out of space.


C

Consultar o Oracle Enterprise Manager (OEM) para uma visão genérica do ambiente, identificar o SQL mais lento com base em elapsed time e, em seguida, forçar o otimizador a usar um índice específico, sem necessidade de avaliar a distribuição dos dados ou a validade do plano de execução.


D

Desabilitar as estatísticas do otimizador de consultas, pois elas consomem recursos do sistema, e confiar na indexação manual de todas as colunas de todas as tabelas para garantir um acesso mais rápido e eficiente aos dados.


E

Reiniciar o banco de dados para liberar a memória e resolver a degradação de desempenho, o que é a maneira mais simples e rápida de restaurar a performance do sistema. As ferramentas de monitoramento seriam usadas apenas após a reinicialização para identificar se a performance foi restaurada.

Em consultas analíticas da INFRA S.A. que consolidam dados histórico-financeiros de diversos projetos, o uso de SELECT * tende a aumentar o consumo de memória e de E/S.


C

Certo


E

Errado

Um sistema OLTP apresenta lentidão generalizada em horário de pico. O DBA suspeita de contenção por bloqueios. Qual visualização do dicionário de dados ou ferramenta de monitoramento é a mais adequada para identificar, em tempo real, sessões que estão esperando por recursos e qual recurso específico está causando a espera?


A

V$SESSION ou sys.dm_exec_sessions


B

V$SQL ou sys.dm_exec_query_stats


C

V$LOCK ou sys.dm_tran_locks


D

V$SYSSTAT ou sys.dm_os_performance_counters


E

V$SESSION_WAIT ou sys.dm_os_wait_stats

No IFPB, um técnico de tecnologia da informação está desenvolvendo consultas em um sistema acadêmico para apoiar o setor de registro de alunos. É necessário identificar alunos que apresentam desempenho insatisfatório e não possuem nenhum tipo de bolsa acadêmica, mas que ingressaram por cota. Os critérios definidos são:


● Alunos com mais de 5 reprovações;

● Aproveitamento geral inferior a 6,0;

● Sem qualquer tipo de bolsa acadêmica;

● Ingresso por cota.


Considere que a tabela Alunos possui os campos:


● id_aluno — identificador do aluno;

● nome — nome do aluno;

● num_reprovacoes — quantidade de reprovações;

● aproveitamento_geral — média geral ou aproveitamento acadêmico;

● tipo_bolsa — se o aluno possui bolsa (NULL ou valor diferente de NULL);

● tipo_ingresso — forma de ingresso (cota, ampla, etc.).


Qual das seguintes consultas SQL retorna corretamente todos os alunos que atendem a esses critérios?


A

SELECT id_aluno, nome

FROM Alunos

WHERE num_reprovacoes < 5

AND aproveitamento_geral >= 6.0

AND tipo_bolsa IS NOT NULL

AND tipo_ingresso = 'ampla';


B

SELECT id_aluno, nome, num_reprovacoes,

aproveitamento_geral, tipo_bolsa, tipo_ingresso

FROM Alunos

WHERE num_reprovacoes > 5

AND aproveitamento_geral < 6.0

AND tipo_bolsa IS NULL

AND tipo_ingresso = 'cota';


C

SELECT id_aluno, nome

FROM Alunos

WHERE num_reprovacoes > 5

AND aproveitamento_geral > 6.0

AND tipo_bolsa IS NULL

AND tipo_ingresso = 'cota';


D

SELECT *

FROM Alunos

WHERE tipo_bolsa IS NOT NULL

AND tipo_ingresso = 'cota';


E

SELECT id_aluno, nome, num_reprovacoes,

aproveitamento_geral

FROM Alunos

WHERE num_reprovacoes > 5

AND aproveitamento_geral < 6.0;

Uma consulta SQL que realiza múltiplos JOINs e filtros sobre tabelas grandes está apresentando lentidão.

As opções a seguir apresentam estratégias recomendadas para otimização, à exceção de uma. Assinale-a.


A

Normalizar ainda mais as tabelas envolvidas.


B

Utilizar EXPLAIN para verificar o plano de execução.


C

Avaliar estatísticas e atualizá-las com ANALYZE.


D

Criação de índices nos campos usados em JOIN e WHERE.


E

Reescrever a consulta evitando subconsultas desnecessárias.

Em bancos relacionais, o otimizador escolhe planos a partir de estimativas e estruturas de acesso. Assinale a alternativa que representa estratégia consistente para consulta com predicado por intervalo e ordenação por duas colunas.


A

Criar índice composto alinhado à seletividade do predicado e à ordenação desejada, avaliar estatísticas atualizadas e revisar plano por custo real em execução.


B

Habilitar dicas para forçar nested-loop em qualquer cenário, priorizando paralelismo por quantidade de threads e buffers grandes.


C

Eliminar índices existentes e focar varredura completa por tabela, confiando em cache sempre residente e picos previsíveis de E/S.


D

Fixar hash join para cada junção, criar índices separados por coluna e aceitar operação de ordenação posterior como etapa natural.


E

Resolver ordens por criação de índice exclusivo para cada coluna de ordenação, manter estatísticas padrão e restringir reescrita de consultas.

Um desenvolvedor está analisando a seguinte tabela que armazena pedidos de um e-commerce:


Tabela: PedidoItem


PedidoID

ProdutoID

Quantidade

PrecoUnit

1001

55

2

29.99

1001

68

1

15.50

1002

55

3

29.99


Ele precisa de uma consulta que retorne o valor total de cada pedido. Assinale a alternativa que apresenta a consulta SQL correta e mais eficiente.


A

SELECT PedidoID, SUM(Quantidade * PrecoUnit) AS Total FROM PedidoItem.


B

SELECT PedidoID, SUM(Quantidade) * SUM(PrecoUnit) AS Total FROM PedidoItem GROUP BY PedidoID.


C

SELECT PedidoID, SUM(Quantidade * PrecoUnit) AS Total FROM PedidoItem GROUP BY PedidoID.


D

SELECT PedidoID, Quantidade * PrecoUnit AS Total FROM PedidoItem GROUP BY PedidoID.


E

SELECT PedidoID, SUM(Quantidade) * AVG(PrecoUnit) AS Total FROM PedidoItem GROUP BY PedidoID.

Considere as seguintes assertivas sobre técnicas de otimização e projeto de bancos de dados e marque V, para as verdadeiras, e F, para as falsas:


(__)A desnormalização do esquema de banco de dados é uma técnica que busca eliminar toda e qualquer redundância, garantindo a maior consistência possível dos dados.

(__)A operação de junção (JOIN) é reconhecida como uma das operações que potencialmente mais consomem tempo no processamento de consultas.

(__)Em um otimizador de consulta baseado em custo, o sistema estima e compara os custos de diferentes estratégias de execução para escolher a mais eficiente.

(__)A criação de índices em atributos que não são usados em cláusulas de junção ou seleção melhora o desempenho das consultas, pois permite que todos os caminhos de acesso à tabela sejam otimizados igualmente.


A alternativa que apresenta a sequência correta é:


A

F − V − F − V.


B

F − F − V − F.


C

V − V − F − F.


D

F − V − V − F.


E

V − F − V − V.

Considerando o sistema gerenciador de bancos de dados PostgreSQL 17.5, há um comando que possibilita a otimização de consultas feitas ao banco de dados, de forma que algumas partições de dados sejam excluídas pelo planejamento da consulta.


Tal comando é:


A

DEALLOCATE ...


B

SET ROLE ...


C

CLUSTER ...


D

SET enable_partition_pruning = on;


E

SET CONSTRAINTS ...

Em uma grande empresa, a prática mais adequada para o balanceamento entre normalização e desempenho em consultas de um banco de dados, considerando-se que o negócio exige leitura intensa e baixa taxa de atualização, seria


A

criar índices para todas as colunas que sejam usadas em qualquer tipo de consulta.


B

desconsiderar as formas normais e manter os dados em um único JSON, o que aumentaria a velocidade das operações.


C

normalizar todas as tabelas até 5FN.


D

permitir desnormalizações controladas, como colunas duplicadas, por exemplo, para obtenção de ganho de desempenho.


E

usar somente bancos de dados que sejam mais rápidos para leitura, como o NoSQL.

Sobre otimização de consultas (SQL tuning), assinale a alternativa correta.


A

A cláusula DISTINCT é puramente lógica e não impacta desempenho.


B

O otimizador sempre usa índices quando eles existem.


C

O desempenho de uma consulta é independente da forma como ela é escrita, já que o otimizador sempre gera o mesmo plano de execução.


D

Indices não têm impacto no desempenho de consultas.


E

Examinar o plano de execução com os comandos do SGBD é uma prática recomendada para diagnosticar consultas com baixo desempenho sem alterar o resultado lógico.

Analise as afirmativas abaixo sobre otimização de consultas e tuning de bancos de dados Oracle.


1. O ADDM (Automatic Database Diagnostic Monitor) é um suplemento com uma IDE visual que permite ao usuário monitorar e revisar consultas em tempo real de execução.

2. O SQL Tuning Advisor é um software interno da Oracle que identifica expressões SQL problemáticas e realiza recomendações sobre como otimizá-las.

3. O SQL Access Advisor realiza recomendações sobre views materializadas, índices e logs de views materializadas: quais criar, eliminar ou reter.


Assinale a alternativa que indica todas as afirmativas corretas.


A

É correta apenas a afirmativa 2.


B

São corretas apenas as afirmativas 1 e 2.


C

São corretas apenas as afirmativas 1 e 3.


D

São corretas apenas as afirmativas 2 e 3.


E

São corretas as afirmativas 1, 2 e 3.

Em um ambiente SQL Server, diversas Stored Procedures com consultas parametrizadas apresentam degradação de desempenho após repetidas execuções, pois planos de execução otimizados para parâmetros específicos estão sendo reutilizados de forma inadequada. Qual prática de otimização é mais apropriada para mitigar esse comportamento e estabilizar a performance sem comprometer o cache de planos?


A

Desativar o parameter sniffing globalmente para todo o banco de dados.


B

Adotar recompilação seletiva (OPTION (RECOMPILE)) apenas em procedimentos críticos.


C

Forçar a utilização de hints de paralelismo em todas as queries.


D

Converter todas as Stored Procedures em views indexadas para reduzir variabilidade.


E

Usar cursores estáticos para controlar o cache de execução.

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?


A

Criar uma indexação no campo status para acelerar a filtragem das solicitações concluídas.


B

Substituir a consulta por uma visão materializada, armazenando os resultados pré-calculados para reduzir a carga computacional da consulta.


C

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.


D

Implementar um bloqueio exclusivo (LOCK) na tabela Solicitações durante a execução da consulta para evitar inconsistências, impedindo leituras concorrentes.

 
 
Gerar simulado