Você está na página 1de 64

UTFPR - Universidade Tecnolgica Federal do Paran

Processamento e otimizao de consultas

Leyza Baldo Dorini 04/Nov/2009

Programao da aula

Introduo: processamento e otimizao de consultas Etapas:


Traduo Transformao Definio do plano de execuo

Introduo
Os SGBDs so responsveis por uma srie de tarefas que antes ficavam sob responsabilidade do programador. Dentre estas
Processamento e otimizao de consultas Gerenciamento de transaes Recuperao de falhas

Processamento de consultas
Refere-se ao conjunto de atividades envolvidas na extrao de dados de um BD. Tais atividades envolvem:
Traduo de linguagens de alto nvel em expresses que sejam mais adequadas para serem utilizadas no nvel fsico do sistema de arquivos Uma variedade de transformaes para otimizao de consultas Avaliao/execuo de consultas

Processamento de consultas

Processamento de consultas
Traduo: responsvel pelas etapas de: 1. anlise lxica (identifica clusulas SQL e nomes) 2. anlise sinttica (validao da gramtica-regras sintticas) 3. anlise semntica (nomes usados de acordo com a estrutura do esquema) 4. converso para uma rvore algbrica da consulta (recebe a consulta em linguagem de alto nvel (consulta SQL, p. ex.), e retorna uma representao interna (rvore algbrica da consulta)

Processamento de consultas
Transformao: responsvel pela gerao da rvore algbrica otimizada a partir da rvore algbrica da consulta. A rvore algbrica otimizada uma rvore de consulta equivalente (chega ao mesmo resultado, mas que processa de forma mais eficiente). Tambm chamada de fase de Otimizao Algbrica.

Processamento de consultas
Definio do plano de execuo: a fase de anlise de alternativas de definio de estratgias de acesso (escolha de algoritmos para implementao de operaes). Leva em conta a existncia de ndices, estimativas sobre os dados (tamanho de tabelas, etc, ...). Gera uma rvore com indicao de estratgias de acesso.

Processamento de consultas
Gerador de cdigo: recebe a rvore com indicao de estratgias de acesso (plano de execuo) e gera cdigo executvel correspondente. Processador run time: recebe o cdigo executvel, processa a consulta e retorna os resultados ao usurio.

Otimizao de consultas
A otimizao de consultas feita basicamente em duas etapas: Otimizao Algbrica (ou baseada em regras ou heurstica) Plano de execuo (ou baseada em custos)

Otimizao de consultas: otimizao algbrica


Otimizao algbrica
responsvel por gerar uma rvore algbrica otimizada, equivalente rvore inicial da consulta, mas que processa mais rapidamente. Recebe como entrada a rvore da consulta inicial, e gera na sada uma rvore da consulta otimizada. Tem como base as regras de equivalncia algbrica e o algoritmo de otimizao algbrica

Otimizao de consultas: otimizao algbrica


Otimizao algbrica (consideraes):
As regras de equivalncia algbrica devem ser conhecidas pelo otimizador para que possam ser geradas transformaes vlidas; O algoritmo de otimizao algbrica indica a ordem de aplicao das regras e de outros processamentos de otimizao.

Otimizao de consultas: plano de execuo


Tem como objetivo analisar alternativas de processamento e escolher a melhor alternativa dentre as estimadas. Para avaliar o custo de uma alternativa, analisa estimativas sobre os dados (tamanho das tabelas, existncia de ndices, seletividade, ...) e o respectivo custo dos algoritmos de processamento de operaes algbricas.

Processamento de consultas
Em resumo:
Traduo Transformao Criao de plano (estratgia) de acesso

A princpio, vamos ver de maneira global. Depois, veremos os detalhes envolvidos em cada etapa.

Processamento de consultas

PC: traduo

PC: traduo
O primeiro passo consiste em traduzir a consulta expressada em uma linguagem de alto nvel (ex: SQL) para uma forma mais adequada para ser utilizada como representao interna de uma consulta ao sistema.

PC: traduo
Consulta SQL Adequada para uso humano; No adequada ao processamento pelo SGBD: descreve uma sequncia de passos (procedimento) a ser seguida; No descreve uma estratgia eficiente para a implementao de cada passo no que tange o acesso em nvel fsico (arquivos do BD).

PC: traduo
Exemplo de representao adequada: baseada na lgebra relacional, criando uma rvore (algbrica) da consulta. Ex:

SELECT m.crm, m.nome, a.andar FROM Medicos m, Ambulatorio a WHERE m.espec = ortopedia AND a.andar = 2 AND m.nro = a.nro

A rvore a estrutura que representa o mapeamento da consulta para a lgebra relacional

PC: traduo
Os ns internos representam operaes algbricas e os ns folha as relaes do BD ou resultados intermedirios Neste passo, o analisador sinttico tambm verifica a sintaxe da consulta do usurios, se os nomes das relaes existem, etc

PC: traduo (viso geral)


De forma geral, uma consulta SQL traduzida em uma expresso equivalente da lgebra relacional estendida e representada em uma estrutura de dados de rvore de consulta que ento otimizada Em geral, as consultas SQL so decompostas em blocos de consultas, que formam as unidades bsicas que podem ser traduzidas em operadores algbricos otimizados

PC: traduo
Um bloco de consulta contm uma nica expresso SELECT-FROM-WHERE, bem como clusulas GROUP BY e HAVING, se elas forem partes do bloco Por isso, consultas consultas aninhadas dentro de uma consulta so identificadas por blocos separados (no-correlacionadas + fcil) Como a SQL inclui operadores de agregaco (MAX, MIN...) eles tambm devem estar includos na lgebra relacional estendida

PC: traduo
Considere a seguinte consulta SQL:

SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > (SELECT (MAX) SALARY FROM EMPLOYEE WHERE DNO = 5);

PC: traduo
Essa consulta inclui uma subconsulta aninhada, seria decomposta em 2 blocos.

Bloco interno (SELECT (MAX) SALARY FROM EMPLOYEE Bloco externo WHERE DNO = 5) SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > c

PC: traduo
SELECT FROM WHERE LNAME, FNAME EMPLOYEE SALARY > ( SELECT FROM WHERE MAX (SALARY) EMPLOYEE DNO = 5);

SELECT FROM WHERE

LNAME, FNAME EMPLOYEE SALARY > C

SELECT FROM WHERE

MAX (SALARY) EMPLOYEE DNO = 5

LNAME, FNAME (SALARY>C(EMPLOYEE))

MAX SALARY (DNO=5 (EMPLOYEE))

PC: transformao

PC: transformao
A base composta por:
Regras de equivalncia algbrica: devem ser conhecidas pelo otimizador para que possam ser geradas transformaes vlidas Algoritmo de otimizao algbrica indica a ordem de aplicao das regras e de outros procedimentos de otimizao Entrada: rvore da consulta inicial; Sada: rvore da consulta otimizada (pode manter a mesma rvore).

Transformao:

Transformaes de Expresses Relacionais


Uma consulta pode ser expressa de diversas maneiras diferentes, com diferentes custos de avaliao. Equivalcia de Expresses; Regras de Equivalncia; Exemplos de Transformaes;

Equivalncia de expresses: exemplo


Considerando as tabelas a seguir e suas instncias, encontre os nomes de todos os clientes que possuem uma conta em qualquer agncia localizada no Brooklyn.

Para resolver esta expresso, seguindo a forma como ela est escrita, necessrio criar uma relao intermediria grande

Equivalncia de expresses

Equivalncia de expresses

Equivalncia de expresses
Entretanto, somente as tuplas que pertencem a agncias localizadas no Brooklyn so interessantes. Reescrevendo a consulta, consegue-se eliminar a necessidade de considerar as tuplas que no tm cidade_agncia = Brooklyn, reduzindo o tamanho do resultado intermedirio:

Equivalncia de expresses

Equivalncia de expresses

Equivalncia de expresses
Dada uma expresso de lgebra relacional, a funo do otimizador de consulta propor um plano de avaliao da consulta que gere o mesmo resultado da expresso fornecida e que seja uma maneira menos onerosa de gerar o resultado (ou que, pelo menos, no seja muito mais cara que a maneira mais barata). Para isso o otimizador precisa gerar planos alternativosque produzam o mesmo resultado da expresso dada e escolher o menos caro.

Regras de Equivalncia Algbrica


Uma regra de equivalncia diz que expresses de duas formas so equivalentes se podemos transformar uma na outra preservando a equivalncia. Preservar a equivalncia significa que as relaes geradas pelas duas expresses tm o mesmo conjunto de atributos e contm o mesmo conjunto de tuplas, embora seus atributos possam estar ordenados de forma diferente.

Regras de Equivalncia Algbrica


As regras de equivalncia so usadas pelo otimizador para transformar expresses em outras logicamente equivalentes. Assuma que:
: denota predicados; L: denotas listas de atributos; E: denota expresses da lgebra relacional.

Exemplos de transformaes

Otimizao Heurstica
Uma rvore de consulta pode ser transformada passo a passo em outra rvore de consulta mais eficiente. Entretanto preciso assegurar que os passos de transformao sempre levem a uma rvore de consulta equivalente. Determinadas regras de transformao preservam essa equivalncia.

Resumindo...
Determinar a rvore algbrica inicial correspondente a esta consulta Fazer selees o mais cedo possvel Converter produtos cartesianos seguidos de seleo em juno Fazer projees o mais cedo possvel

PC: definio do plano de acesso (execuo)

PC: definio do plano de acesso (execuo)


Anlise de alternativas de definio de estratgias de acesso: escolha de algoritmos para implementao de operaes, existncia de ndices, estimativas sobre os dados (tamanho de tabelas, por exemplo) Considera algoritmos predefinidos para implementao de passos do processamento e estimativas sobre os dados

A Escolha de Planos de Avaliao


Em outras palavras...
A gerao de expresses apenas parte do processo de otimizao de consultas. Um plano de avaliao define exatamente qual algoritmo ser usado para cada operao e como a execuo das operaes coordenada.

A Escolha de Planos de Avaliao

Prxima aula...
Veremos otimizao baseada em custos com mais detalhes!!

Otimizao baseada em custo


O otimizador baseado no custo gera uma faixa de planos de avaliao a partir de uma determinada consulta usando as regras de equivalncia e escolhe aquele de menor custo. Para uma consulta complexa, o nmero de planos diferentes por ser muito grande.

PC: otimizador de consultas


A transformao e a definio do plano de execuo compem o otimizador de consultas

Otimizao de consultas
Em resumo, a otimizao de consultas o processo de selecionar o plano de execuo mais eficiente enttre as muitas estratgias possveis Isso evita que o usurio tenha que fornecer a melhor consulta Em resumo: otimizao de consultas o processo de melhoria da estratgia de processamento

Exerccio!!!