Questão nº 45
Questão de Tecnologia da Informação · FGV STN 2024 (nº 45)
Em bancos de dados relacionais que utilizem a linguagem SQL (não procedural) a otimização de comandos SQL é um fator central no “tuning” de um banco de dados.
A otimização foca na determinação do modo mais eficiente para obter o resultado. Nesse contexto, o “estimator” é o componente que avalia o consumo de recursos num certo plano de execução.
De acordo com o que é preconizado pela Oracle, os fatores pelos quais o custo é estimado são:
- ACardinality, Cost, Selectivity. (alternativa correta)
- BDisk memory, Indexes, RAM memory.
- CFilters, Partitions, Primary keys.
- DIndexes, Join operations, Size.
- EJoins, Projections, Selection.
Resposta comentada
Gabarito Alternativa A
O otimizador de consultas de um banco de dados, como o Oracle, age como um planejador inteligente que tenta prever o "custo" de diferentes formas de executar uma consulta SQL, escolhendo a mais barata. Para fazer essa previsão de custo, ele se baseia em algumas métricas fundamentais.
-
(A) Correta: Cardinality, Cost, Selectivity.
- Cardinality (Cardinalidade) é a estimativa do número de linhas que uma operação (como um filtro ou um join) irá produzir ou processar. Quanto mais linhas, maior o custo.
- Selectivity (Seletividade) é a estimativa da fração de linhas que satisfazem uma condição de filtro. Uma alta seletividade significa que poucas linhas passam pelo filtro, reduzindo o trabalho.
- Cost (Custo) é a métrica final que o otimizador calcula para cada plano de execução, representando o consumo de recursos (CPU, I/O, rede) com base na cardinalidade e seletividade. Estes são os três pilares da estimativa de custo do otimizador.
-
(B) Incorreta: Disk memory, Indexes, RAM memory. Estes são recursos físicos ou objetos do banco de dados que influenciam o custo, mas não são os fatores pelos quais o custo é estimado diretamente. O custo é estimado em termos de I/O e CPU, que são afetados por esses recursos.
-
(C) Incorreta: Filters, Partitions, Primary keys. Estes são elementos do banco de dados ou tipos de operações que o otimizador considera ao construir um plano. Os filters (filtros) afetam a selectivity (seletividade), partitions (partições) podem reduzir a cardinality (cardinalidade) e as primary keys (chaves primárias) geralmente implicam em índices que afetam o caminho de acesso, mas eles não são os fatores de estimativa em si. Armadilha da banca: Esta alternativa é tentadora porque esses elementos são cruciais para a otimização, mas são meios ou objetos que influenciam as métricas de estimativa (cardinalidade, seletividade) e o custo final, não as métricas de estimativa em si.
-
(D) Incorreta: Indexes, Join operations, Size. Semelhante à alternativa B e C, indexes (índices) e join operations (operações de junção) são componentes ou operações que o otimizador avalia, e o size (tamanho) (de tabelas, linhas) é um atributo que afeta o custo. No entanto, eles não são os fatores primários pelos quais o custo é estimado, mas sim elementos que contribuem para o cálculo da cardinalidade, seletividade e custo.
-
(E) Incorreta: Joins, Projections, Selection. Estas são operações da álgebra relacional. O otimizador estima o custo de realizar essas operações, mas os fatores que ele usa para essa estimativa são a cardinalidade, a seletividade e o custo resultante de cada etapa. "Selection" aqui se refere à operação de filtrar linhas, mas a métrica usada para quantificar o efeito dessa operação é a "selectivity".
Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura) (Caderno Tipo 1). Reproduzida para fins de estudo.