Escolar Documentos
Profissional Documentos
Cultura Documentos
Set/2008
Referncias Bibliogrficas
NAVATHE, Shamkant B., ELSMARI, Ramez. Sistemas de Banco de Dados. 4 ed. Addinson Wesley Publishing, 2005. Captulo 15
Introduo
Existe nos SGBDR um mdulo conhecido como otimizador de consultas A expresso otimizao de consultas, embora seja frequentemente utilizada, na verdade imprpria, pois em alguns casos a estratgia encontrada no garantidamente a melhor possvel (tima) Encontrar a estratgia tima consumiria muito tempo, e exigiria o uso de informao dinmica sobre o contedo e organizao em disco das tabelas Em vez de otimizao de consultas, deveramos dizer planejamento de execuo de consultas
Otimizador de consultas
Representao interna da consulta utilizando rvore/grafo Planejamento de uma estratgia para recuperao dos dados, a partir dos arquivos do anco de dados
Em algumas linguagens de consulta, a estratgia est definida na maneira em que o programador implementa a consulta Em SQL, que uma linguagem declarativa, apenas os resultados desejados so especificados (especifica o que fazer e no como fazer) Portanto, a otimizao de consultas necessria em SGBD relacionais, baseados em SQL
Processamento de consulta
Figura 15.1
Cada SGBD adota estratgias especficas para otimizar as consultas. As mais comuns so: Utilizao de regras heursticas (regras). Estimativa de custo de execuo (escolher o plano de menor custo ). O ORACLE pode usar regras ou custo. O DB2 da IBM usa somente custo.
Consultas SQL so decompostas em blocos Cada bloco transformado em uma expresso da AR Os blocos so otimizados internamente e atravs de decises sobre a ordem de execuo dos blocos Um bloco contm um nico comando SELECT-FROMWHERE, incluindo clusulas GROUP BY e HAVING, se houver
decomposio
Usada sempre que aparece ORDER BY Usada para implementar algoritmos SORT-MERGE para processar junes Usada na eliminao de tuplas duplicadas (clusula DISTINCT, ou em operaes de conjuntos)
A ordenao pode ser evitada se houver um ndice Ordenao externa usada para grandes tabelas Estratgia usual: SORT-MERGE
Dividir a tabela em pedaos que caibam na memria Ordenar cada pedao e salvar em disco Mesclar os pedaos ( la MergeSort)
S1. Busca linear (fora bruta): recuperar todos os registros no arquivo, testando se os valores atendem ou no condio de seleo S2. Busca binria: executada sobre o atributo que determina a ordenao do arquivo (ex.: OP1, se CPF for a chave de ordenao do arquivo) S3: Uso de ndice primrio (ou chave de hashing): executada sobre o atributo que determina a indexao do arquivo. Recupera no mximo um registro (ex.: OP1, se CPF for a chave de indexao)
S4. Uso de ndice primrio para recuperar mltiplos registros: executado se a comparao no for de igualdade mas for sobre um atributo chave de um ndice primrio (ex.: NUMDEP em OP2) S5. Uso de ndice em cluster para recuperar mltiplos registros: executado se a comparao no for de igualdade e for sobre atributo no-chave que possui ndice em cluster (ex.: NUD=5 em OP3) S6. Uso de ndice secundrio (B-tree, B+-tree) sobre comparao de igualdade: usado para recuperar um nico registro se o atributo de indexao for chave (valores nicos) ou para recuperar mltiplos registros se o atributo de indexao no for chave
OBS:
O mtodo S1 o nico que no pressupe a existncia de ndice. Os mtodos S4 e S6 podem ser utilizados em consultas por faixas (range queries). Exemplo: 1000 <= SALARIO <= 1500.
S7. Seleo conjuntiva usando ndice individual: se um atributo envolvido em uma nica condio simples em uma clusula de juno conjuntiva possuir um caminho de acesso que permita usar S2 a S6, selecionar com base nesse atributo e checar o atendimento s demais condies em cada registro recuperado S8. Seleo conjuntiva usando ndice composto: se dois ou mais atributos envolvidos em comparaes de igualdade na condio de seleo conjuntiva, e um ndice composto existir para esses atributos, selecionar com base nesses atributos e checar o atendimento s demais condies em cada registro recuperado (ex.: OP5, com ndice sobre CPFE e PNO)
S9. Seleo conjuntiva pela interseo de apontadores de registros: se ndices secundrios ou outros caminhos de acesso estiverem disponveis para mais de um dos atributos envolvidos na condio de seleo conjuntiva, cada ndice pode ser usado para recuperar um conjunto de apontadores para registros que satisfazem parcialmente condio. A interseo entre esses conjuntos indica os registros que devem ser recuperados
Mtodos:
J1. Juno usando loop aninhado (fora bruta): para cada registro r de R, recuperar todo registro s de S e testar se os dois registros atendem a condio de juno J2. Juno usando loop simples: requer estrutura de acesso para recuperar os registros correspondentes na outra tabela, portanto um dos atributos da condio de juno precisa ser a chave de um ndice J3. Juno sort-merge: se os registros de R e de S estiverem fisicamente ordenados pelos atributos A e B, realizar a juno pela varredura simultnea dos dois arquivos (este o mtodo mais eficiente possvel
Projeo: implementao simples (exceto quando existe a clusula DISTINCT e a chave no faz parte da lista de atributos). Operaes de conjunto: utilizam variaes da tcnica de sortmerge.
Sem o GROUP BY: pode utilizar ndices, caso o campo seja indexado. Com o GROUP BY: utilizao da tcnica anterior a cada grupo separadamente (mais complexo). Se existir um ndice cluster para o atributo de agrupamento ser mais fcil. Os operadores de agregao podem ser implementados usando uma varredura na tabela ou o percurso de um ndice, se disponvel Se existir ndice, o resultado de MIN e MAX pode ser obtido diretamente O resultado de COUNT pode ser obtido no ndice, sem a necessidade de acessar os registros SUM e AVG podem ser muito simplificados se forem sobre um valor indexado
O parser da consulta gera uma representao interna inicial A otimizao realizada de acordo com regras heursticas Um plano de execuo construdo, de modo a gerar grupos de operaes com base nos arquivos e ndices envolvidos O plano repassado ao processador de runtime para escalonamento
Justificativa: seleo e projeo reduzem o tamanho do arquivo de entrada, enquanto a juno tende a aumentar este tamanho.
rvore de consulta: estrutura em rvore que corresponde a uma expresso da lgebra relacional. Para uma mesma consulta, pode haver vrias rvores de consulta. Em vez das regras heursticas, clculos baseados em um modelo de custos podem ser usados. Esse modelos sero explicados mais adiante.
Figura 15.4
Duas rvores de consulta para a consulta Q2. (a) rvore de consulta correspondente expresso da lgebra relacional para Q2. (b) rvore de consulta inicial (cannica) para a consulta SQL Q2. (c) Grfico de consulta para Q2.
Figura 15.5
Passos na converso de uma rvore de consulta durante a otimizao heurstica. (a) rvore de consulta inicial (cannica) para a consulta SQL Q. (b) Transferncia das operaes SELECT para baixo na rvore de consulta. (continua)
Figura 15.5
Passos na converso de uma rvore de consulta durante a otimizao heurstica. (c) Aplicao, em primeiro lugar, da operao SELECT mais restritiva. (d) Substituindo CARTESIAN PRODUCT e SELECT por operaes JOIN. (continua)
Manter a cada passo apenas os atributos necessrios deslocar as operaes PROJECT para baixo
Figura 15.5
Passos na converso de uma rvore de consulta durante a otimizao heurstica. (e) Transferncia das operas PROJECT para baixo na rvore de consulta.
Nmero de registros (tuplas) (r) Tamanho mdio do registro (R) Nmero de blocos de disco (b) Fator de bloco (nmero de registros por bloco) (fb) Nmero de nveis dos ndices multinvel (x) Nmero de valores distintos de um atributo (d) Seletividade (sl): frao dos registros que satisfaz a uma condio de igualdade sobre o atributo (ex.: em 1000 registros, a seletividade de um atributo CPF 0,001; a de um atributo sexo 0,50)
Atributo chave: sl = 1/r Atributo no chave: sl = d/r
Cardinalidade da seleo (s): nmero mdio de registros que satisfaz a uma condio de igualdade sobre o atributo (s = sl * r)
Otimizao de consultas
Observaes:
Para grandes bancos de dados, deve-se dar nfase na reduo do custo de acesso ao armazenamento secundrio (nmero de transferncias de blocos entre disco e memria principal). Para pequenos bancos de dados, que podem ser armazenados em memria, a nfase deve ser na reduo do custo de clculo. Para bancos de dados distribudos, o custo de comunicao pode ser o mais importante. Pode usar Mtodos baseados em heursticas ou Mtodos baseados em custo. Possibilidade do desenvolvedor de aplicao especificar dicas para o otimizador. Mtodos baseados em custo. Possibilidade do DBA ou desenvolvedor de aplicao especificar dicas para o otimizador.
Desempenho ? Tempo de execuo ? Tempo de resposta ? Como algum mede Performance ? Tempo de resposta ? Intuio ? Reclamaes ? Ligaes telefnicas ?
CPU BUSY ?
Tempo de resposta mdio de 5 segundos ou menos em 90 % das vezes ? Para "x" transaes por segundo, um tempo de resposta mdio de 3 segundos ? "x" mensagens por dia, hora, minuto, segundo ? Do 1 SQL at o COMMIT ? De fila do comando ? O que o usurio final v ?
Tempo de Input Queue ? Tempo de Output Queue Projeto do programa ? Nmero de pontos de COMMIT no programa ? Como o tempo de resposta medido? Processamento do programa de aplicaes ? Projeto do programa ? Nmero e o tipo de CALLs SQL ? Projeto do data base ? Projeto das tabelas ? ndices ? Disponibilidade de buffers ?