Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao da aula
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)
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
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
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);
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:
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.
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
Prxima aula...
Veremos otimizao baseada em custos com mais detalhes!!
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!!!