MATA60 BANCO DE DADOS Aula: Otimização Prof. Daniela Barreiro Claro
Introdução a Otimização SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias de execução possíveis O processo de escolha destas estratégias é chamado de OTIMIZAÇÃO. 2
Introdução a Otimização Passos principais Tradução da consulta SQL para a álgebra relacional Otimização do resultado Estratégias de otimização Otimização baseada em heurísticas Otimização baseada na estimativa de custo da consulta 3
Otimização Etapas do Processamento Select cpf from candidato where cpf= 859 ; Analisador Léxico, cpf= 859 Sintatico ( cpf= 859 ( e (Candidato)) Validação ) cpf Daniela Claro, 859, Salvador Dados Pedro Antonio, 123, Rio de J Saida da Consulta 859 Otimizador cpf= 859 ; usar indice 1 candidato Mecanismo de Execução candidato;indice1 cpf disciplina;indice2-codigo Estatisticas 4
Otimização O sistema tenta encontrar uma expressão que seja equivalente à expressão dada, porém cuja execução seja mais eficiente. Para isso a consulta é separada em blocos Estes blocos podem ser traduzidos em operadores algébricos e assim otimizados Considere a consulta: 5 Q
Exemplo de Tradução de uma consulta SQL 6 Q
Otimização Consultas são representadas internamente na forma de uma árvore ou grafo Árvores de consulta são preferidas para a otimização pois determinam a ordem de execução das operações Grafos de consulta indicam apenas as operações e os respectivos operandos envolvidos portanto, existe apenas um grafo correspondente a cada consulta Regras heurísticas são usadas para alterar a representação interna (árvore ou grafo) de uma consulta de modo a otimizar a sua execução Por exemplo: operações de projeção e seleção são aplicadas antes de uma junção O plano de execução gerado determina a ordem em que as operações serão executadas e os recursos a serem utilizados (por ex., índices) 7
Exemplo Consulta Para cada projeto localizado em Stafford, recupere o número do projeto, o número do departamento responsável e o último nome, o endereço e a data de nascimento do gerente do departamento. Consulta em SQL SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION= STAFFORD ; Álgebra Relacional 8
Arvore Canônica 9
Arvore de consulta 10
Arvore de consulta 11
Arvore de consulta 12
Arvore de consulta 13
Otimização Há duas técnicas principais para a implementação da otimização das consultas Baseada em regras heurísticas Estimativa do custo Geralmente, estas técnicas são combinadas em um otimizador de consulta. 14
Regras Heurísticas Regras heurísticas são utilizadas para transformar um árvore de consulta em uma árvore equivalente Normalmente a nova árvore é mais eficiente. Há várias regras de equivalência para transformar estas consultas, dentre elas: 1. Operações de Seleção Conjuntiva podem ser decompostas c1 and c2 and c3 (R) c1 ( c2 ( c3 (R))) 2. Comutatividade das Operações de Seleção c1 ( c2 (R)) c2 ( c1 (R)) 15
Regras Heurísticas 3. Comutatividade de Join e Natural Join R S S R e R S S R 4. Comutatividade da Seleção e Join: Se todos os atributos da condição c forem atributos de apenas uma relação R c (R S) ( c (R)) S São regras de equivalência que podem ser utilizadas para criar planos equivalentes 16
Regras Heurísticas Uma das principais técnicas heurísticas é Operações SELECT e PROJECT antes de aplicar o JOIN As operações SELECT e PROJECT reduzem o tamanho de um arquivo Suponha a seguinte consulta: nome_cliente ( cidadeagencia= Brooklyn (agencia conta depositante) Sabendo que só existem 4 agências no Brooklyn nome_cliente ( cidadeagencia= Brooklyn (agencia)) (conta depositante) 17 Q
Regras Heuristicas 18
Regras Heuristicas 19
Regras Heuristicas 20
Análise 21
Exercício Dado a SQL abaixo, faça a Algebra Relacional correspondente: SELECT e.ultimo_nome FROM empregrado e, trabalha t, projeto p WHERE nome_projeto = arquivo X AND p.nro_projeto = t.nro_projeto AND e.nro_empregado = t.nro_empregado Algebra Relacional ultimo_nome ( nome_projeto= arquivo and nro_projeto=nro_projeto and nro_empregado=nro_empregado (empregado trabalha projeto) 22
Exercício Arvore Canônica arvore 1 23
Exercício Conversão da Arvore de Consulta 24
Exercício Conversão da Arvore de Consulta 25
Exercício Conversão da Arvore de Consulta 26
Exercício Conversão da Arvore de Consulta 27
Estimativa de custo Um otimizador deve estimar e comparar os custos da execução de uma consulta As heurísticas são utilizadas para reduzir os custos da otimização Mesmo com o uso de heurísticas, a otimização da consulta baseada em custo impõe uma sobrecarga substancial ao processamento da consulta 28
Estimativa de custo Informações do catálogo O tamanho de cada arquivo Número de registros Tamanho médio dos registros Número de valores distintos e a seletividade Otimização baseada em custo considera a ORDEM DAS JUNÇÕES 29
Estruturas de Acesso Os operadores algébricos, como SELECT podem ser executados por diversos algoritmos. Estas escolhas dependem do uso ou não de índices, da complexidade do operador, etc 30
Algoritmos para operação SELECT Métodos de Busca sem índice Busca Linear Varre todos os registros e testa para ver se satisfazem a condição de seleção. Lento, mas se aplica a qualquer arquivo Busca binária Se o arquivo for ordenado e a condição de seleção for uma comparação de igualdade 31
Algoritmos para operação SELECT Métodos de Busca com índice Índice primário para igualdade Se houver uma comparação de igualdade sobre um atributochave com índice primário, utiliza-se o índice para apanhar um único registro cpf = 859 (candidato) Índice primário para não igualdade Se a condição envolver >,<, usa o índice para encontrar o registro de igualdade e depois recupera todos os registros seguintes do arquivo ordenado. cpf > 859 (candidato) 32
Algoritmos para operação SELECT Métodos de Busca com índice Indice primário e igualdade para atributo não chave Se a condição envolver um atributo não chave, use o índice para recuperar os registros. Vários registros podem ser encontrados. Indice é usado para posicionar os registros coddisciplina = mata60 (candidato) Indice secundário com igualdade Com a condição de igualdade, as seleções podem usar um índice secundário 33
Algoritmos para operação SELECT Métodos de Busca para Seleção complexa Seleção conjuntiva utilizando índice individual Verifica se o atributo satisfaz cada uma das condições simples cpf = 859 AND cidade = Salvador (candidato) Seleção conjuntiva utilizando índice composto Se existir um índice composto este índice será usado Uma condição disjuntiva OR é muito mais difícil de se processar É a união dos registros que satisfazem as condições individuais. 34
Algoritmos para operação JOIN É uma das que mais consome tempo no processamento da consulta Junção: R A=B S Método de Junção de Laços Aninhados (nested loop) Para cada registro r em R(laço externo) recupere cada registro s de S(laço interno) e teste se os dois satisfazem a condição de junção r[a]=s[b] É mais eficiente usar a relação com menos tuplas como externa 35
Algoritmos para operação JOIN Método de Junção Sort-Merge (ordenação-fusão) Se ambos os registros em R e S forem classificados (ordenados) fisicamente pelos valores de A e B, esta junção é muito mais eficiente. Estes arquivos são unidos simultaneamente Método de Junção Hash Os registros são particionados utilizando a mesma função hash. Se as tuplas r e s satisfazem a condição de junção, elas terão o mesmo valor para os atributos de junção. 36
Algoritmos para operação JOIN Para delimitar qual tabela participa do laço externo Fator de Seleção da Junção É a porcentagem de registros de um arquivo que sofrerá a junção com os registros do outro. 3000 disciplinas e 50 candidatos 1. DISCIPLINA X CANDIDATO Recupera cada registro de Disciplina e usa o índice para recuperar os candidatos. Não haverá registro para disciplinas que não tenham candidatos 2. CANDIDATO X DISCIPLINA Recupera cada registro de candidato e depois usa o índice para encontrar a disciplina correspondente. FS=1 Assim, tanto o menor arquivo, quanto o maior fator de seleção devem ser usados no laço externo. 37 E
Otimização nos Bancos de Dados comerciais Oracle Trabalha com as duas técnicas: regras heurísticas e estimativa de custos Desenvolvedor pode dar dicas ao otimizador Sugere atualizar as estatísticas, mudanças na estrutura, criação de índices PostgreSQL Otimizador a maior parte baseado em custos mas usa também heuristicas IBM DB2 Otimizador baseado em custo e utiliza uma estrutura extensível baseada em regra 38
Exercício 39
www.dcc.ufba.br/~dclaro Disciplina: MATA60 (2016.1) Material: Cristina Ciferri Semantic Formalisms and Applications Research Group Facebook: /formasresearchgroup Twitter: /formasresearch FORMAS - UFBA