Otimização De Desempenho Flashcards
(15 cards)
O que ocorre na etapa de parsing de uma consulta SQL?
A consulta é convertida em uma árvore de análise sintática e léxica
Ex: a consulta SELECT nome FROM clientes WHERE idade >30 é decomposta em uma árvore com nós representando SELECT, FROM, WHERE e os operadores e valores
Em qual etapa de uma consulta SQL ocorrem validações para assegurar que, por exemplo, não há ambiguidade na referência de atributos e que as permissões de acesso de usuário estão de acordo com os objetos acessados?
Na análise semântica (etapa 2)
O que ocorre na etapa de otimização lógica de uma consulta SQL?
A consulta é convertida para um plano lógico, para uma árvore de álgebra relacional
O que é o modelo de custo de I/O?
In/Out
Ele considera quantos blocos de disco o sistema terá que acessar, ler ou escrever pra executar o código
Qual a diferença entre custo de CPU e custo de memória?
Custo de CPU = em quanto tempo a consulta será concluída
Custo de memória = quanto espaço será necessário pra armazenar tabelas temporárias, hash tables, etc, para a consulta ocorrer
O que fazem as técnicas de reescrita?
Transformam a árvore lógica (de álgebra relacional) em estruturas equivalentes que simplificam a consulta, reduzem cardinalidade e eliminam subconsultas desnecessárias
Pra otimizar o desempenho da consulta
O que faz a técnica de pushing de seleções?
O que ela economiza?
Deixa operações de seleção WHERE o mais próximo possível da base de dados, antes de operações como junções e agregações
Isso economiza I/O, pois são necessárias menos entradas em disco para realizar a consulta
Qual a diferença na estrutura física Heap file, sorted file e clustered file?
Help = armazena registros fisicamente sem ordem específica. Busca o primeiro espaço disponível em disco e grava lá
Sorted = ordena fisicamente os registros por uma chave específica
Clustered file = ordena fisicamente os registros por um índice
Entre as estruturas heap file, sorted file e clustered file, qual a diferença entre os custos de inserção e de leitura?
Heap = baixo custo de inserção, alto custo de leitura
Sorted e clustered = alto custo de inserção, baixo custo de leitura
O sorted file e o clustered file são usados tipicamente em OLAP ou OLTP?
Sorted file = OLAP
Clustered file = OLTP
O que é um índice do tipo B-Tree?
Balanced tree
É um índice estruturado como uma árvore hierárquica
Como funciona uma estrutura de armazenamento em tabelas hash?
Elas usam uma função que converte a chave de busca em um endereço/posição dentro da estrutura de armazenamento.
Então, pra cada consulta pedida, ela aplica a função no valor pedido e já sabe onde o dado estará
Ex: CPF 317.602.648-06
Hash: h(CPF) = 1 -> bucket 2
Ele põe todos os CPFs que tem 1 na 2a posição no bucket 2
Então, toda vez que aparecer um CPF com 1 na 2a posição, ele sabe que está no bucket 2
Quais as vantagens da B-tree para a hash?
E as vantagens da hash para a B-Tree?
Hash é melhor para buscar resultados exatos mas ineficiente para buscas por intervalo e não suporta diretamente ORDER BY
B-Tree é naturalmente ordenado e vai bem em busca por intervalo
O que significa o número 1 e o número 0 num índice bitmap?
Num índice bitmap de uma determinada coluna:
1 = valor está presente naquela linha
0 = valor não está presente naquela linha
Para otimizar consultas, deve-se realizar projeções, seleções e produtos cartesianos o mais cedo possível?
Produtos cartesianos, não.
Eles só devem ser usados quando inevitáveis, pois são mais custosos
Projeções e seleções, sim.
A boa prática é executá-las o mais cedo possível